/mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development

Primary LanguageJavaApache License 2.0Apache-2.0

Mybatis-Plus-Logo

Born To Simplify Development

为什么要改写这个项目?

在使用MyBatis-Plus过程中,还是发现有一些不太完善的地方。因为对MybatisPlus 相关代码较为熟悉,所以在发现这些问题之后可以很好的进行调整优化。目前该版本主要是维护一个自己和自己公司的一个使用版本(目前基于v3.5.3.1

Links

文档之类的参照之前的MyBatis-Plus官网

改写的地方(目前基于v3.5.3.1

  • com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
//原
return maybeDo(condition,()->{
    String sql=formatParam(mapping,val);
    sqlSet.add(columnToString(column)+Constants.EQUALS+sql);
    });
//现
return maybeDo(condition,()->sqlSet.add(columnToString(column)+Constants.EQUALS+val.toString()));
  • com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
//原
return maybeDo(condition,()->{
    String sql=formatParam(mapping,val);
    sqlSet.add(column+Constants.EQUALS+sql);
    });
//现
return maybeDo(condition,()->sqlSet.add(column+Constants.EQUALS+val.toString()));
  • com.baomidou.mybatisplus.core.metadata.IPage 去除convert方法
  • com.baomidou.mybatisplus.core.mapper.BaseMapper精简
  • com.baomidou.mybatisplus.extension.conditions包下所有类修改
  • 新增com.baomidou.mybatisplus.extension.conditions.delete.LambdaDeleteChainWrapper
  • 删除com.baomidou.mybatisplus.extension.conditions.query.ChainQuery
  • 删除com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper
  • 调整实现com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper
  • 调整实现com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper
  • 删除com.baomidou.mybatisplus.extension.conditions.update.ChainUpdate
  • 删除com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper
  • 删除com.baomidou.mybatisplus.extension.conditions.ChainWrapper
  • com.baomidou.mybatisplus.extension.kotlin.KtUpdateWrapper(当前版本删除)
//原
return maybeDo(condition){
    val sql=formatParam(mapping,value)
    sqlSet.add(columnsToString(column)+Constants.EQUALS+sql)
}
//现
return maybeDo(condition){
    sqlSet.add(columnsToString(column)+Constants.EQUALS+value.toString())
}
  • 删除com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO
  • 添加方法com.baomidou.mybatisplus.core.toolkit.StringUtils#resolveFieldName
  • 重新实现com.baomidou.mybatisplus.extension.service.IService
  • 重新实现com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
  • 调整com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler,兼容shardingsphere
  • 增加方法:com.baomidou.mybatisplus.core.injector.AbstractMethod#forceSqlSet
  • com.baomidou.mybatisplus.extension.toolkit.Db(写的很好,但是不符合目前的封装。故删除,重新实现)
  • com.baomidou.mybatisplus.extension.toolkit.SimpleQuery(写的很好,但是不符合目前的封装。故删除,重新实现)

其他实现(需要使用增强包,暂未开放)

  • 自定义实现表结构检查,避免上线SQL遗漏导致语句报错
  • 实现分页对象在fegin下传递不友好的情况下
  • MySQL、PostgreSQL下Upsert实现(已抽象,可以实现对应的方法进行其他数据库的支持)
  • 解决MybatisPlus一直以来的Batch方式的实现槽点以及事务等其他BUG
  • 解决批量增加修改时,自动填充失效的问题
  • 增强调用update方法时,可以自定义属性强制赋值(不会过滤null值)