mybatis-plus 3.1.0 发布,划重点一大波升级

来源: 投稿
作者: 青苗
2019-02-25

Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段,无入侵全方位 ORM 辅助层让您拥有更多时间吃鸡、陪家人、陪朋友。

官网:https://mybatis.plus

致谢

    感谢 咩咩 、 聂秋秋 、 噗噗怪( 新生血液,女装大佬 - 豪言 MP GITHUB  + GITEE  star > 1 w 放出女装,各位看你们的了)经过几个月的努力适配、不停的 BUG  CLOSED 及测试。

更新日志

  • 升级 mybatis 到 3.5.0 版本
  • 升级 mybatis-spring 到 2.0.0 版本
  • 升级 jsqlparser 到 1.4 版本
  • 新增 p6spy 日志打印支持
  • 变更 IService 的 getOne(Wrapper<T> queryWrapper) 方法如果获取到多条数据将会抛出 TooManyResultsException 异常
  • 修复 自定义分页功能不支持注解 @select 问题
  • 修复 生成器的配置 kotlin 模式下 swagger 模式无效问题
  • 修复 生成器 is 开头字段无法自动注解问题
  • 修复 生成器 Serializable Active 模式继承父类包自动导入异常问题
  • 修复 生成器 支持公共字段自动读取父类 class 属性问题
  • 修复 generator 的 kotlin 模式下 swagger 模式无效问题
  • 修复 枚举(注解方式)转换器在存储过程中转换失败
  • 修复 beetl 模板逻辑删除注解错误问题
  • 修复 通过 mybatis-config.xml 方式构建的 Configuration 的 mapUnderscoreToCamelCase 默认值非 true 的问题
  • 修复 sql解析器动态代理引发的bug
  • 修复 mapper 使用纯注解下可能触发的重试机制在个别情况下启动报错的问题
  • 优化 支持指定 defaultEnumTypeHandler 来进行通用枚举处理
  • 优化 从 hibernate copy 最新代码到 SqlFormatter
  • 移除 wrapper 的 in 以及 notIn 方法内部对入参 coll 及 动态数组 的非empty判断

注意: 如果以前有直接使用以上的方法的入参可能为 empty 的现在会产出如下sql: in () 或 not in () 导致报错

  • 移除 wrapper 的 notInOrThrow 和 inOrThrow 方法,使用新版的 in 以及 notIn 效果一样,异常则为sql异常
  • 移除 IService 的 query 链式调用的 delete 操作
  • 移除 xml 热加载相关配置项,只保留MybatisMapperRefresh该类并打上过时标志
  • 日常优化
展开阅读全文
25 收藏
分享
加载中
精彩评论

引用来自“猫咪喵喵”的评论

沙发没了。。。
<---------女装大佬的号在此,点击关注,follow,你就有第一手女装照"骗"
2019-02-25 10:50
3
举报
xml 热加载为什么要去掉
2019-02-25 10:58
1
举报
☀ 还不快上车不等了
2019-02-25 10:29
1
举报
😋真香
2019-02-25 10:27
1
举报
最新评论 (22)

引用来自“MissThee”的评论

我还是觉得tkmapper更好使

引用来自“青苗”的评论

可能是先入为主的思维吧,你试试 MP 也许会不一样的感觉, 各种 lambda 的骚操作

引用来自“黑子鱼咖”的评论

主要是mp绑定mybatis,这一点导致我不使用

引用来自“青苗”的评论

不走近看看也许错过的就是一片森林,青菜萝卜各有所好吧
我选择tk.mapper,这片森林
2019-02-28 20:32
0
回复
举报

引用来自“MissThee”的评论

我还是觉得tkmapper更好使

引用来自“青苗”的评论

可能是先入为主的思维吧,你试试 MP 也许会不一样的感觉, 各种 lambda 的骚操作

引用来自“黑子鱼咖”的评论

主要是mp绑定mybatis,这一点导致我不使用
不走近看看也许错过的就是一片森林,青菜萝卜各有所好吧
2019-02-28 09:05
0
回复
举报

引用来自“MissThee”的评论

我还是觉得tkmapper更好使

引用来自“青苗”的评论

可能是先入为主的思维吧,你试试 MP 也许会不一样的感觉, 各种 lambda 的骚操作
主要是mp绑定mybatis,这一点导致我不使用
2019-02-28 08:12
0
回复
举报

引用来自“yong9981”的评论

mp是Apache2协议,Hibernate是LGPL协议,这么直接拷贝源码,总觉得不对劲,这种混合协议的使用没问题吧? 以前也看中Hibernate的SqlFormatter,但为了避开LGPL,干脆自已写了一个了事。

引用来自“小锅盖”的评论

https://www.cnblogs.com/zjoch/p/3899034.html 感觉没问题啊

引用来自“yong9981”的评论

我是这样理解的,虽然这是个极端情况:如果第三方看到MP是Apache2协议,就拿来修改修改在商业项目里闭源使用。但是因为MP用到了部分LGPL的源码,这时就会产生与LGPL的冲突(直接拷贝了LGPL源码,而且闭源了)。

引用来自“小锅盖”的评论

确实很极端,话说你写的能贡献不。

引用来自“yong9981”的评论

我写的位于https://gitee.com/drinkjava2/jSqlBox/tree/master/core/src/main/java/com/github/drinkjava2/jdialects下,名为SqlFormatter和DDLFormatter虽然简陋了点,但用是的Apache2.0,其它Apache2开源项目随时都可以抄源码过去。

引用来自“青苗”的评论

没有必要 mp 合法即可,第三方怎么做与 mp 无关
问题适适是MP这样做合法不,这点是有疑问的,第三方只要将MP闭源应用了,就可能违反LGPL协议了,而根源还在MP上。
2019-02-26 01:40
0
回复
举报

引用来自“MissThee”的评论

我还是觉得tkmapper更好使
可能是先入为主的思维吧,你试试 MP 也许会不一样的感觉, 各种 lambda 的骚操作
2019-02-25 22:22
0
回复
举报
我还是觉得tkmapper更好使
2019-02-25 22:13
0
回复
举报

引用来自“yong9981”的评论

mp是Apache2协议,Hibernate是LGPL协议,这么直接拷贝源码,总觉得不对劲,这种混合协议的使用没问题吧? 以前也看中Hibernate的SqlFormatter,但为了避开LGPL,干脆自已写了一个了事。

引用来自“小锅盖”的评论

https://www.cnblogs.com/zjoch/p/3899034.html 感觉没问题啊

引用来自“yong9981”的评论

我是这样理解的,虽然这是个极端情况:如果第三方看到MP是Apache2协议,就拿来修改修改在商业项目里闭源使用。但是因为MP用到了部分LGPL的源码,这时就会产生与LGPL的冲突(直接拷贝了LGPL源码,而且闭源了)。

引用来自“小锅盖”的评论

确实很极端,话说你写的能贡献不。

引用来自“yong9981”的评论

我写的位于https://gitee.com/drinkjava2/jSqlBox/tree/master/core/src/main/java/com/github/drinkjava2/jdialects下,名为SqlFormatter和DDLFormatter虽然简陋了点,但用是的Apache2.0,其它Apache2开源项目随时都可以抄源码过去。
没有必要 mp 合法即可,第三方怎么做与 mp 无关
2019-02-25 21:32
0
回复
举报

引用来自“yong9981”的评论

mp是Apache2协议,Hibernate是LGPL协议,这么直接拷贝源码,总觉得不对劲,这种混合协议的使用没问题吧? 以前也看中Hibernate的SqlFormatter,但为了避开LGPL,干脆自已写了一个了事。

引用来自“小锅盖”的评论

https://www.cnblogs.com/zjoch/p/3899034.html 感觉没问题啊

引用来自“yong9981”的评论

我是这样理解的,虽然这是个极端情况:如果第三方看到MP是Apache2协议,就拿来修改修改在商业项目里闭源使用。但是因为MP用到了部分LGPL的源码,这时就会产生与LGPL的冲突(直接拷贝了LGPL源码,而且闭源了)。

引用来自“小锅盖”的评论

确实很极端,话说你写的能贡献不。
我写的位于https://gitee.com/drinkjava2/jSqlBox/tree/master/core/src/main/java/com/github/drinkjava2/jdialects下,名为SqlFormatter和DDLFormatter虽然简陋了点,但用是的Apache2.0,其它Apache2开源项目随时都可以抄源码过去。
2019-02-25 18:41
0
回复
举报

引用来自“yong9981”的评论

mp是Apache2协议,Hibernate是LGPL协议,这么直接拷贝源码,总觉得不对劲,这种混合协议的使用没问题吧? 以前也看中Hibernate的SqlFormatter,但为了避开LGPL,干脆自已写了一个了事。

引用来自“小锅盖”的评论

https://www.cnblogs.com/zjoch/p/3899034.html 感觉没问题啊

引用来自“yong9981”的评论

我是这样理解的,虽然这是个极端情况:如果第三方看到MP是Apache2协议,就拿来修改修改在商业项目里闭源使用。但是因为MP用到了部分LGPL的源码,这时就会产生与LGPL的冲突(直接拷贝了LGPL源码,而且闭源了)。
确实很极端,话说你写的能贡献不。
2019-02-25 18:00
0
回复
举报

引用来自“yong9981”的评论

mp是Apache2协议,Hibernate是LGPL协议,这么直接拷贝源码,总觉得不对劲,这种混合协议的使用没问题吧? 以前也看中Hibernate的SqlFormatter,但为了避开LGPL,干脆自已写了一个了事。

引用来自“小锅盖”的评论

https://www.cnblogs.com/zjoch/p/3899034.html 感觉没问题啊
我是这样理解的,虽然这是个极端情况:如果第三方看到MP是Apache2协议,就拿来修改修改在商业项目里闭源使用。但是因为MP用到了部分LGPL的源码,这时就会产生与LGPL的冲突(直接拷贝了LGPL源码,而且闭源了)。
2019-02-25 13:51
0
回复
举报
更多评论
22 评论
25 收藏
分享
返回顶部
顶部