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

