mybatis寫介面 簡單的實現等
阿新 • • 發佈:2019-01-07
mybatis書寫自定義的介面
實現偽刪除,排序置頂等介面
使用的mybatis是
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.4.0</version> </dependency>
1、定義介面
package tk.mybatis.mapper.common.base.delete; import org.apache.ibatis.annotations.DeleteProvider; import tk.mybatis.mapper.provider.base.BaseDeleteProvider; /** * @author xiebq 2018/12/24 */ public interface LogicDeleteByPrimaryKey<T> { /** * 根據主鍵欄位進行刪除,方法引數必須包含完整的主鍵屬性 * * @param key * @return */ @DeleteProvider(type = BaseDeleteProvider.class, method = "dynamicSQL") int logicDeleteByPrimaryKey(Object key); }
2、整合介面
public interface BaseDeleteMapper<T> extends DeleteMapper<T>, LogicDeleteByPrimaryKey<T>, DeleteByPrimaryKeyMapper<T> { }
3、實現介面 在BaseDeleteProvider 類中實現介面的方法
/** * 偽刪除的實現 * * @param ms */ public String logicDeleteByPrimaryKey(MappedStatement ms) { final Class<?> entityClass = getEntityClass(ms); StringBuilder sql = new StringBuilder(); sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass))); sql.append(" set is_delete = 1 "); Date date = new Date(); SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sql.append(" ,updated = '"+sdf2.format(date) +"' "); sql.append(SqlHelper.wherePKColumns(entityClass)); return sql.toString(); }
4、使用介面
@Mapper public interface UserDao extends MyMapper<User> {}
public Boolean logicDelete(Integer id) { userDao.logicDeleteByPrimaryKey(id); return true; }
tk mybatis
通過拼接sql的語句實現,顯示介面定義,實現類拼接sql語句,然後實現語句
在mybatis拼接sql語句中,提供多個sql語句拼接的Provider