mybatis-plus 3.0-RC1 发布,我们不一样来试试啊

青苗
 青苗
发布于 2018年08月02日
收藏 5

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

Mybatis-Plus 3.X 架构图

  • annotation  注解相关

  • extension 扩展插件

  • core     核心功能

  • generator 代码生成器

  • boot-starter 快速集成 spring boot 

GITEE   GITHUB  文档地址

大家关心的正式版 及 3.0 的全新文档(文档帝花费很多时间在编辑中)会有不一样的体验,预计八月中旬释出敬请等待...

MP3 升级日志:

  • 优化工具类部分代码,并修复一个在多线程环境下可能会引发死锁的BUG

  • 新增断言类,顺便修改几处地方的判断抛异常为使用断言

  • 去掉多余的 "implements Serializable"

  • 魔法值都改为全局常量模式

  • 咩咩说了 MP 3.0 分页已经飘飘欲仙了,不在需要迁就使用 PageHelper 模式

  • issue #384 QueryWrapper 支持排除指定字段模式

  • 全新 banner,全新感觉

  • 再优化一下抛异常的过程

  • 修改 class 实例化对象的方式,现在可以实例化私有 class

  • 支持无配置可启动使用 Gitee issues/ILJQA

  • 释放sqlSession,待优化 ActiveRecord单元测试

  • 解决只调用 last 产生的 sql 会出的问题

  • 修复Lambda首位属性为基类属性时错误.

  • 增加泛型限制,格式化下代码.

  • 优化一下 AbstractWrapper 使用的 ISqlSegment

  • 其他

1、强大的条件构造器

// SQL: SELECT name, age FROM user WHERE sex=1 AND ( age=3 OR age =5 ) AND name LIKE '%MP3%'
new QueryWrapper<User>(可传实体条件,字符串类型默认模糊查询)
.lambda().select(User::getName, User::getAge)
.eq(User::getSex, 1)
.and(i -> i.eq(User::getAge, 3).or().eq(User::getAge, 5))
.like(User::getName, "MP3");

2、 无限制的分页模型设计

// 分页 Mapper 层直接返回 IPage 接口,让分页模型完全自定义
IPage page = baseMapper.selectPage(page, ...);

3、通用 Api Controller 层

@GetMapping("/api")
public ApiResult<String> testApi(String content) {
   ApiAssert.isNull(ErrorCode.TEST, content);
   return success(content);
}

更多姿势!期待您的发现 ...

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:mybatis-plus 3.0-RC1 发布,我们不一样来试试啊
加载中

精彩评论

青苗
青苗

引用来自“霏微”的评论

MP3 里会有这首歌吧《Rage Your Dream》:wink:
必须有 :smile:

最新评论(17

徒伤悲
徒伤悲
很少期待啊,但Controller都有了,有点过了吧
小锅盖
小锅盖

引用来自“zoemak”的评论

你好,我有两个问题:
1、为什么要加个controller,持久层不是应该专注持久层的工作吗?
2、baseMapper为什么不加一个batchInsert和batchUpdate?我看到在模板的ServiceImpl里面是有的。
1可以不用生成controller,也支持自定义。2只能在service调用batchExecutor,底层无法通用且可能会溢出。
口吞山河
口吞山河

引用来自“孙先生的开源之旅”的评论

updateById(bean) 这个方法,比如bean里有 int id , String name,int age 三个属性,bean我只set了id 和name,更新的时候会把age当 0 update掉了,有什么方法可以只根据id更新name ,而不更新age 吗
不用int,改成integer就行了。
风吹过的绿洲
风吹过的绿洲
mapper文件相同命名空间,支持合并么?
青苗
青苗

引用来自“zoemak”的评论

你好,我有两个问题:
1、为什么要加个controller,持久层不是应该专注持久层的工作吗?
2、baseMapper为什么不加一个batchInsert和batchUpdate?我看到在模板的ServiceImpl里面是有的。
批量在 service 层考虑通用性, controller 属于扩展包方便通用
zoemak
zoemak
你好,我有两个问题:
1、为什么要加个controller,持久层不是应该专注持久层的工作吗?
2、baseMapper为什么不加一个batchInsert和batchUpdate?我看到在模板的ServiceImpl里面是有的。
开源中国首席技术官
开源中国首席技术官

引用来自“孙先生的开源之旅”的评论

updateById(bean) 这个方法,比如bean里有 int id , String name,int age 三个属性,bean我只set了id 和name,更新的时候会把age当 0 update掉了,有什么方法可以只根据id更新name ,而不更新age 吗
这是你自己的问题吧,实体怎么能用基本数据类型呢
蓝水晶飞机
蓝水晶飞机

引用来自“孙先生的开源之旅”的评论

updateById(bean) 这个方法,比如bean里有 int id , String name,int age 三个属性,bean我只set了id 和name,更新的时候会把age当 0 update掉了,有什么方法可以只根据id更新name ,而不更新age 吗
你自己的错误啊,Entity 请用包装类,int 替换为 Integer!
青苗
青苗

引用来自“孙先生的开源之旅”的评论

updateById(bean) 这个方法,比如bean里有 int id , String name,int age 三个属性,bean我只set了id 和name,更新的时候会把age当 0 update掉了,有什么方法可以只根据id更新name ,而不更新age 吗
是不是你的age 为int 基本类型自带初始值
无耻下问
无耻下问
支持。代码生成的时候能不能指定生成 mp的selectList等默认的mapper.xml,如果要覆盖默认的selectList,要自己去写,好麻烦
返回顶部
顶部