253 Star 2.3K Fork 1.1K

baomidou/mybatis-plus-samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

MP功能集合演示项目

该项目演示以下功能:

  1. 逻辑删除
  2. 自动填充
  3. 自定义全局方法:insert/insertBatch

关于自定义全局方法攻略:

1.定义SQL: 参考DeleteAll, MysqlInsertAllBatch

public class MysqlInsertAllBatch extends AbstractMethod {
    @Override
        public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
            return null;//TODO: 自定义SQL
        }
}

2.注册: 参考MyLogicSqlInjector, 注册自定义方法

public class MyLogicSqlInjector extends DefaultSqlInjector {

    /**
     * 如果只需增加方法,保留MP自带方法
     * 可以super.getMethodList() 再add
     * @return
     */
    @Override
    public List<AbstractMethod> getMethodList() {
        List<AbstractMethod> methodList = super.getMethodList();
        methodList.add(new DeleteAll());
        methodList.add(new MyInsertAll());
        methodList.add(new MysqlInsertAllBatch());
        return methodList;
    }
}

3.把方法定义到BaseMapper,参考MyBaseMapper

public interface MyBaseMapper<T> extends BaseMapper<T> {
    
    Integer deleteAll();
    
    int myInsertAll(T entity);
    
    int mysqlInsertAllBatch(@Param("list") List<T> batchList);
}

注意: baseMapper的方法名称必须和自定义全局方法里的id一致

public class MysqlInsertAllBatch extends AbstractMethod {

    @Override
    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
        String sql = "xxxxxx";
        //第三个参数必须和baseMapper的自定义方法名一致
        return this.addInsertMappedStatement(mapperClass, modelClass, "mysqlInsertAllBatch", sqlSource, new NoKeyGenerator(), null, null);
    }

其中insertBatch: 参考MysqlInsertAllBatch

演示批量保存使用mysql特有语法:

insert into user(id, name, age) values (1, "a", 17), (2,"b", 18)

坑点:

  • 在演示自定义批量和自动填充功能时,需要在mapper方法的参数上定义@Param(),
  • 而mp默认仅支持 list, collection, array 3个命名,不然无法自动填充
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/baomidou/mybatis-plus-samples.git
git@gitee.com:baomidou/mybatis-plus-samples.git
baomidou
mybatis-plus-samples
mybatis-plus-samples
master

搜索帮助

371d5123 14472233 46e8bd33 14472233