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源碼的理解

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM