mybatis-plus 2.1.9 发布,代号:怀念 - 开源中国社区
Float_left Icon_close
mybatis-plus 2.1.9 发布,代号:怀念
青苗 2018年01月29日

mybatis-plus 2.1.9 发布,代号:怀念

青苗 青苗 发布于2018年01月29日 收藏 23

mybatis-plus 是一款 mybatis 动态 SQL 自动注入 mybatis 增删改查 CRUD 操作中间件。让 mybatis 拥有 hibernate 的单表高效,也保留 xml sql 的灵动, 减少你的开发周期优化动态维护 xml 实体字段,您再也不要羡慕不需要纠结是选择 hibernate 还是 jpa 呢?请记住还有 MP 2018 不容错过。

代号:怀念  , 纪念 2017 baomidou 组织小伙伴 MP 共同成长之路,奔向 2018 旺旺旺,再次感谢 OSC @红薯、感谢 baomidou 组织所有基友们。

升级日志:

[v2.1.9] 2018.01.28 

  • 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

  • 兼容配置方式,优先使用自定义注入.

  • 调整 Gradle 依赖模式

  • IdType 可选 ID_WORKER_STR 字符串类型 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

  • spring-boot-starter 合并为 mp 核心模块

  • 升级 demo  其他优化

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:mybatis-plus 2.1.9 发布,代号:怀念
分享
评论(34)
精彩评论
3
六的飞起来。:clap::clap::clap::clap::clap::clap::clap:
3
小秋秋、天气冷了!记得多穿秋裤
2
好用,两个字囊括了一切。祝2018更上一层楼~
2
占个位置卖瓜子
1

引用来自“_鱼_”的评论

mp整体很好,但注入器的设计,值得商榷。几个默认方法的解析,不一定要使用xml脚本,可以写几个sqlsource的实现类。这样能极大的简化整体架构,去掉mp内部的parameterhandler。

引用来自“青苗”的评论

能否 PR 过来看看,欢迎一起来改进 MP

引用来自“_鱼_”的评论

:smile:,模仿mp,很多工具类直接拿来用了,在非spring环境重新写了一个https://gitee.com/111_stone_111/econagebatis,几个默认方法的解析在com.econage.eccm.test.base.mybatis.mapper.defaultsqlsource,id值、乐观锁注入,不再需要parameterhandler
很好抽空拜读。
最新评论
0

引用来自“yu兵”的评论

mybatis-plus-2.1.9.jar这个包下下来里面什么都没有.5以上都是这样,为什么?
在子模块中
0
mybatis-plus-2.1.9.jar这个包下下来里面什么都没有.5以上都是这样,为什么?
0
杭州三流程序员发来贺电
0
怒赞mp
0

引用来自“wendal”的评论

我可以求个#NutzBoot#支持嘛?

引用来自“青苗”的评论

给个 NB starter 文档?
看现成的starter比文档更好理解吧 ^_^ https://gitee.com/nutz/nutzboot/tree/dev/nutzboot-starter/nutzboot-starter-beetlsql https://gitee.com/nutz/nutzboot/tree/dev/nutzboot-starter/nutzboot-starter-nutz-dao
0
这名字骚的不行啊!!!
0

引用来自“wendal”的评论

我可以求个#NutzBoot#支持嘛?
给个 NB starter 文档?
0
我可以求个#NutzBoot#支持嘛?
0

引用来自“tianhandigeng1498”的评论

批量处理那块 为了得到插入id,每一次循环都调用一下flushStatements,我想说真的是批量吗! :smile:

引用来自“青苗”的评论

MP 批量是经过海量数据验证的,分批次提交是合理的。不懂不要装懂 sql 长度有限的一条 sql 你给我搞定海量提交。

引用来自“tianhandigeng1498”的评论

我说过要一条sql解决批量提交了? 你以为我会用foreach来解决 所以才说这个的吧 :smile:

引用来自“青苗”的评论

解决海量数据批量提交问题,如果您有更好办法可以 PR 给我们,不能只是说说吧。
不好意思,技术有限,这也是为什么看你源码的原因,想看看你们是怎么解决的。
对于支持autoGeneratedKeys的,批量的话还是直接采用Jdbc3KeyGenerator,对于使用通用的SelectKey解决主键id返回的,如何避免总是返回最后一次插入的键值,没有多做研究。
0

引用来自“tianhandigeng1498”的评论

批量处理那块 为了得到插入id,每一次循环都调用一下flushStatements,我想说真的是批量吗! :smile:

引用来自“青苗”的评论

MP 批量是经过海量数据验证的,分批次提交是合理的。不懂不要装懂 sql 长度有限的一条 sql 你给我搞定海量提交。

引用来自“tianhandigeng1498”的评论

我只是提出了我的一点疑问, 就把你击怒了,说出了“不懂不要装懂” 这样的话, 看来心态着实不行啊:smile:
请看明白了源码真的是每次都 flushStatements 吗?
0

引用来自“tianhandigeng1498”的评论

批量处理那块 为了得到插入id,每一次循环都调用一下flushStatements,我想说真的是批量吗! :smile:

引用来自“青苗”的评论

MP 批量是经过海量数据验证的,分批次提交是合理的。不懂不要装懂 sql 长度有限的一条 sql 你给我搞定海量提交。

引用来自“tianhandigeng1498”的评论

我说过要一条sql解决批量提交了? 你以为我会用foreach来解决 所以才说这个的吧 :smile:
解决海量数据批量提交问题,如果您有更好办法可以 PR 给我们,不能只是说说吧。
0

引用来自“tianhandigeng1498”的评论

批量处理那块 为了得到插入id,每一次循环都调用一下flushStatements,我想说真的是批量吗! :smile:

引用来自“青苗”的评论

MP 批量是经过海量数据验证的,分批次提交是合理的。不懂不要装懂 sql 长度有限的一条 sql 你给我搞定海量提交。
我只是提出了我的一点疑问, 就把你击怒了,说出了“不懂不要装懂” 这样的话, 看来心态着实不行啊:smile:
0

引用来自“tianhandigeng1498”的评论

批量处理那块 为了得到插入id,每一次循环都调用一下flushStatements,我想说真的是批量吗! :smile:

引用来自“青苗”的评论

MP 批量是经过海量数据验证的,分批次提交是合理的。不懂不要装懂 sql 长度有限的一条 sql 你给我搞定海量提交。
我说过要一条sql解决批量提交了? 你以为我会用foreach来解决 所以才说这个的吧 :smile:
0

引用来自“tianhandigeng1498”的评论

批量处理那块 为了得到插入id,每一次循环都调用一下flushStatements,我想说真的是批量吗! :smile:
MP 批量是经过海量数据验证的,分批次提交是合理的。不懂不要装懂 sql 长度有限的一条 sql 你给我搞定海量提交。
0
批量处理那块 为了得到插入id,每一次循环都调用一下flushStatements,我想说真的是批量吗! :smile:
0
比较期待联合主键功能的实现
0
小秋秋、天气冷了!记得多穿秋裤
0
分布式事物
1

引用来自“_鱼_”的评论

mp整体很好,但注入器的设计,值得商榷。几个默认方法的解析,不一定要使用xml脚本,可以写几个sqlsource的实现类。这样能极大的简化整体架构,去掉mp内部的parameterhandler。

引用来自“青苗”的评论

能否 PR 过来看看,欢迎一起来改进 MP

引用来自“_鱼_”的评论

:smile:,模仿mp,很多工具类直接拿来用了,在非spring环境重新写了一个https://gitee.com/111_stone_111/econagebatis,几个默认方法的解析在com.econage.eccm.test.base.mybatis.mapper.defaultsqlsource,id值、乐观锁注入,不再需要parameterhandler
很好抽空拜读。
0
我啥也不会,只会说6��
顶部