Mybatis Plus 2.0 Beta 发布,支持 ActiveRecord
青苗 2016年11月07日

Mybatis Plus 2.0 Beta 发布,支持 ActiveRecord

青苗 青苗 发布于2016年11月07日 收藏 39

活动招募——Python开发趣味应用>>>  

Mybatis-Plus是一款MyBatis的增强 crud 工具包,简化 增 删 改 查 操作。启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。Mybatis-Plus 启动注入非拦截实现、性能更优。

2.0 优化 1.x 改良 API 支持 ActiveRecord 语法,支持 SQL 执行语法。

1、可以 AR 语法

// 保存一条记录
Test t1 = new Test();
t1.setType("test10");
boolean rlt = t1.insert();
print(" ar save=" + rlt + ", id=" + t1.getId());

// 根据ID更新
t1.setType("t1023");
rlt = t1.updateById();
print(" ar updateById:" + rlt);

// 更新 SQL
Test t11 = new Test();
t11.setType("123");
rlt = t11.update("id=?", t1.getId());
print("update sql=" + rlt);

// 查询 SQL
Test t10 = t1.selectOne("id=?", t1.getId());
print("selectOne=" + t10.getType());

// 插入OR更新
t1.setType("t1021");
rlt = t1.insertOrUpdate();
print(" ar saveOrUpdate:" + rlt);

// 根据ID查询
Test t2 = t1.selectById();
print(" t2 = " + t2.toString());
t2.setId(IdWorker.getId());
t2.insert();

// 查询所有
List<Test> tl = t2.selectAll();
for (Test t : tl) {
	print("selectAll=" + t.toString());
}

// 查询总记录数
print(" count=" + t2.selectCount());

// 翻页查询
Page<Test> page = new Page<Test>(0, 10);
page = t2.selectPage(page);
print(page.toString());

// 根据ID删除
rlt = t2.deleteById();
print("deleteById=" + rlt + ", id=" + t2.getId());

// 根据ID查询
Test t20 = t2.selectById();
print("t2 删除后是否存在?" + (null != t20));

// 删除 SQL
rlt = t2.delete("type=?", "t1021");
System.err.println("delete sql=" + rlt);

2、SQL 执行语法

SQL sql = new SQL() {{
    SELECT("a.test_id as id, a.name, a.age");
    FROM("user a");
    WHERE("a.test_type=?");
}};
// SQL 插入

System.err.println(" insertSql 执行 SQL \n");
rlt = userMapper.insertSql(new SQL(){{
	INSERT_INTO("user");
    VALUES("name, age, test_type", "?, ?, ?");
}}, "testInsertSql", 5, 1);
System.err.println("插入!条数:" + rlt);

// SQL 查询

System.err.println(" selectListSql 执行 SQL \n");
List<User> ul3 = userMapper.selectListSql(sql, 1);
for (User u : ul3) {
	print(u);
}

// SQL 删除


System.err.println(" deleteSql 执行 SQL \n");
rlt = userMapper.deleteSql(new SQL(){{
	DELETE_FROM("user");
	WHERE("name=?");
}}, "testInsertSql");
System.err.println("删除!条数:" + rlt);

// SQL 更新

System.err.println(" updateSql 执行 SQL \n");
rlt = userMapper.updateSql(new SQL(){{
	UPDATE("user");
	SET("age=6");
	WHERE("test_type=?");
}}, 1);
System.err.println("成功更新!条数:" + rlt);

// SQL 翻页


System.err.println(" selectPageSql 执行 SQL \n");
Page<User> page3 = new Page<User>(0, 10);
ul3 = userMapper.selectPageSql(page3, sql, 1);
for (User u : ul3) {
	print(u);
}
System.err.println("翻页结果:" + page3.toString());

3、更多传统玩法

http://git.oschina.net/baomidou/mybatis-plus/blob/dev-2.0/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/UserMapperTest.java

Mbatis-Plus-2.x 测试阶段欢迎提出改进意见!!

ActiveRecord 语法体验 DEMO

应用实例 | Demo

Spring-MVC

Spring-Boot

SSM-实战 Demo

感谢 @清风丶   @々果¤珍々   @D.Yang 杨阳   @卧々虎   支持感谢 @清风丶   @々果¤珍々   @D.Yang 杨阳   @卧々虎   支持!!

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Mybatis Plus 2.0 Beta 发布,支持 ActiveRecord
分享
评论(22)
精彩评论
1
方法的命名我觉得可以更好一点,比如:insertSql就叫insert,selectListSql就叫selectList,updateSql就要update...我的意思是可以更加简洁一些,我个人是这么觉得,你觉得呢?
最新评论
0
想知道有人用过mybatisplus做过读写分离嘛?今天按照原来mybatis的读写分离的配置去搞,结果失败了
0

引用来自“alonelywolf”的评论

用了一下,感觉还不错,顺便问一下MP支持分库分表吗?
mycat.io 可以看下 mp 只是优化扩展 mybatis 让它更加自动化,目前已经发布 2.0 正式版。欢迎试用
0
用了一下,感觉还不错,顺便问一下MP支持分库分表吗?
0

引用来自“清风月”的评论

建议直接把activeRecord引入

引用来自“青苗”的评论

目前是支持 1、ar 写法(也是调用注入 SQL 执行) 2、原生写法 + 注入SQL方法 3、混合写法 , 使用者根据喜好自己选择使用,MP 替你维护 bean table 关系,启动时候自动注入并缓存。

引用来自“清风月”的评论

能原生支持吗?我一直想写一个,多表用mybatis,单表用activerecord
无缝支持原生,欢迎试用!
0

引用来自“清风月”的评论

建议直接把activeRecord引入

引用来自“青苗”的评论

目前是支持 1、ar 写法(也是调用注入 SQL 执行) 2、原生写法 + 注入SQL方法 3、混合写法 , 使用者根据喜好自己选择使用,MP 替你维护 bean table 关系,启动时候自动注入并缓存。

引用来自“清风月”的评论

能原生支持吗?我一直想写一个,多表用mybatis,单表用activerecord
无缝支持原生
0

引用来自“清风月”的评论

建议直接把activeRecord引入

引用来自“青苗”的评论

目前是支持 1、ar 写法(也是调用注入 SQL 执行) 2、原生写法 + 注入SQL方法 3、混合写法 , 使用者根据喜好自己选择使用,MP 替你维护 bean table 关系,启动时候自动注入并缓存。
能原生支持吗?我一直想写一个,多表用mybatis,单表用activerecord
0

引用来自“清风月”的评论

建议直接把activeRecord引入
目前是支持 1、ar 写法(也是调用注入 SQL 执行) 2、原生写法 + 注入SQL方法 3、混合写法 , 使用者根据喜好自己选择使用,MP 替你维护 bean table 关系,启动时候自动注入并缓存。
0
感觉这种写法会令SQL碎片化,编写一时爽,维护……(不要低估使用者用这些写法编写复杂SQL的能力)
0
建议直接把activeRecord引入
0

引用来自“小兵成长记”的评论

感觉有点违反了mybatis想法,mybatis是应该是让sql专注于sql,代码专注于代码,在代码里面出现sql是很烦的一种行为,即使做封装,也不要把sql带入代码的封装好吧
ActiveRecord是什么来的?是不是sql对象里封装业务逻辑的意思吗?
0
大赞。。
0

引用来自“小兵成长记”的评论

感觉有点违反了mybatis想法,mybatis是应该是让sql专注于sql,代码专注于代码,在代码里面出现sql是很烦的一种行为,即使做封装,也不要把sql带入代码的封装好吧
这里只是支持,当然可以选择继续在 xml 里面写并不违背!
0
感觉有点违反了mybatis想法,mybatis是应该是让sql专注于sql,代码专注于代码,在代码里面出现sql是很烦的一种行为,即使做封装,也不要把sql带入代码的封装好吧
0

引用来自“徐承恩”的评论

我还是喜欢用helper
什么鬼,贴个链接
0
在示例中只是单表的操作,希望能在例子中增加链表查询和分页的demo。因为在使用场景中关联多表的很多。
0

引用来自“徐承恩”的评论

我还是喜欢用helper
欢迎试用也许你会喜欢 mp
0
不错不错,很方便,有时候不小心会跟内置的方法取到同名,找错还不好找,例如page。
0
我还是喜欢用helper
0

引用来自“稻草鸟人”的评论

方法的命名我觉得可以更好一点,比如:insertSql就叫insert,selectListSql就叫selectList,updateSql就要update...我的意思是可以更加简洁一些,我个人是这么觉得,你觉得呢?

引用来自“青苗”的评论

考虑过! 这么写主要是引起重载类型不匹配问题 seletList(null) 就有问题了
回复@青苗 : 两个美女,一个有气质,有个很浮夸,都是美女,但是我们都会喜欢有气质的;所以呢...相信你,有办法解决这个问题的
0

引用来自“稻草鸟人”的评论

方法的命名我觉得可以更好一点,比如:insertSql就叫insert,selectListSql就叫selectList,updateSql就要update...我的意思是可以更加简洁一些,我个人是这么觉得,你觉得呢?
考虑过! 这么写主要是引起重载类型不匹配问题 seletList(null) 就有问题了
顶部