mybatis写接口 简单的实现等

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

练习项目github上地址链接

mybatis源码的理解

 

转载于:https://www.cnblogs.com/xiebq/p/10193156.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值