# CHANGELOG
BaseMapper<Entity> mapper = SqlHelper.getMapper(Entity.class);
left join (subSelect)
优化TableName
注解属性excludeProperty
支持排除字段Upsert
Wrapper
支持clear
清空Wrapper
子类新增func
方法,主要为了支持在if else
情况下使用Wrapper
的不同method不会导致断链(链式调用不能一链到底)BaseMapper
部分入参为Wrapper
的select方法支持wrapper.first
来设置RDS的hintKtUpdateWrapper#set
支持value为nullIService
部分method调整为default方法setFieldValByName
和getFieldValByName
)某些情况下会发生异常的问题KtWrapper
嵌套函数问题"null"
null as xxx
的情况Function<Param, Param> func
的method,入参更改为 Consumer<Param> consumer
,不影响规范的使用mybatis
到 3.5.0
版本mybatis-spring
到 2.0.0
版本jsqlparser
到 1.4
版本IService
的 getOne(Wrapper<T> queryWrapper)
方法如果获取到多条数据将会抛出 TooManyResultsException
异常@select
问题mybatis-config.xml
方式构建的 Configuration
的 mapUnderscoreToCamelCase
默认值非 true
的问题mapper
使用纯注解下可能触发的重试机制在个别情况下启动报错的问题defaultEnumTypeHandler
来进行通用枚举处理wrapper
的 in
以及 notIn
方法内部对入参 coll
及 动态数组
的非empty判断(注意: 如果以前有直接使用以上的方法的入参可能为 empty 的现在会产出如下sql: in ()
或 not in ()
导致报错)wrapper
的 notInOrThrow
和 inOrThrow
方法(使用新版的 in
以及 notIn
效果一样,异常则为sql异常)IService
的 query
链式调用的 delete
操作MybatisMapperRefresh
该类并打上过时标志IService
新增的 update
链式调用支持 remove
操作IService
新增的 query
链式调用的 delete
打上过时标识BaseMapper
子类时,TableInfo
缓存的 Configuration
只保留最后一个MergeSegments
获取 getSqlSegment
方式BaseMapper
的 update
方法的第一个入参支持为 null
IService
增加4个链式调用方法beetl
模板IdWorker
增加毫秒时间 ID 可用于订单 IDinOrThrow
方法,入参为 empty 则抛出 MybatisPlusExcuption
异常MetaObjectHandler
新提供几个能根据注解才插入值的 default
方法KtQueryWrapper
和 KtUpdateWrapper
类自定义sql
+ ${ew.customSqlSegment} 方式InsertBatchSomeColumn
选装件的
setTotal(Long total)->
setTotal(long total)`Page
的 setSearchCount
为 public
TenantSqlParser
如果 where 条件的开头是一个 orExpression
,直接在左边用and拼接租户信息会造成逻辑不符合预期的问题lambda
方法会向下传递 sqlSelectServiceImpl
个别 batch 操作 flushStatements
问题InsertBatchAllColumn
选装件ServiceImpl
的 batch 操作之外的事务注解Model
的事务注解AbstractSqlInjector
的 isInjectSqlRunner
方法(SqlRunner初始化较早,目前isInjectSqlRunner无法控制)MybatisSessionFactoryBuilder
mybatis-plus-generator
包的依赖,自己按需引入page 分页新增控制是否优化 Count Sql 设置
// 不进行 count sql 优化
page.setOptimizeCountSql(false);
注入定义填充,支持sql注入器,主键生成器.
fixed github issues/231
fixed github issues/234
修改逻辑删除 selectByIds coll 问题
fixed gitee issues/IHF7N
fixed gitee issues/IHH83
兼容配置方式,优先使用自定义注入.
其他优化
字符串类型
IdWorker.getIdStr() 字符串类型TableField 注解新增属性 update
预处理 set 字段自定义注入 fixed gitee IHART
例如:@TableField(.. , update="%s+1") 其中 %s 会填充为字段
输出 SQL 为:update 表 set 字段=字段+1 where ...
例如:@TableField(.. , update="now()") 使用数据库时间
输出 SQL 为:update 表 set 字段=now() where ...
TableField 注解新增属性 condition
预处理 WHERE 实体条件自定义运算规则
@TableField(condition = SqlCondition.LIKE)
private String name;
输出 SQL 为:select 表 where name LIKE CONCAT('%',值,'%')
添加 spring-boot-starter 模块内置 jdbc mp 包不需要单独引入
更舒服的使用 boot
添加对 SQL Server 视图生成的支持
允许字段策略独立设置,默认为 naming 策略
strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 允许字段策略独立设置,默认为 naming 策略
代码生成器抽象 AbstractTemplateEngine 模板引擎抽象类,可自定义模板引擎,新增内置 freemarker 可选
// 选择 freemarker 引擎
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
相关 SQL 解析如多租户可通过 @SqlParser(filter=true)
排除 SQL 解析
# 开启 SQL 解析缓存注解生效
mybatis-plus:
global-config:
sql-parser-cache: true
解决xml加载顺序问题,可随意引入其他 xml sql 片段
修复 author 带123的bug
fix #IGQGE:Wrapper为空,但是page.getCondition()不为空的情况,Condition无法传递问题
fix #IH6ED:Pagination dubbo 排序等属性序列化不支持
判断Wrapper是否为空,使用==,避免被equals方法重载的影响
避免注入自定义基类
剥离 sql 单独提出至 SqlUtils
统一缩进编码风格
优化生成代码执行性能 github issues/219
优化 sql 解析过程
fixed gitee issues/IHCQB
springboot-configuration-processor 修改 compileOnly为optional
其他
####主体功能
####代码生成
####主体功能
####代码生成
####上个版本(2.0.9)升级导致的问题
Insert not found et
异常,见#331###Mybatis-Plus-Boot-Start [1.0.4]
####主体变动
###Mybaits-Plus ####主体功能
and()
or()
方法####代码生成
###Mybatis-Plus-Boot-Start [1.0.2] 代号:清风 ####主体功能
?
导致打印SQL不准确问题,并添加格式化SQL选项--
的情况