
快速了解这是什么:
全新的 ByExample 方法
List<Employee> employees = mapper.selectByExample() .where(id, isLessThan(10), an(employed, isEqualTo("foo"))) .or(occupation, isLike("b%")) .orderBy(id.descending()) .build() .execute(); // where (id < ? and employed = ?) or occupation like ? order by id DESC 可构造任意 SQL
SelectStatementProvider selectStatement = select(id, firstName, lastName, birthDate, employed, occupation) .from(employee) .where(firstName, isEqualTo("Bob"), or(firstName, isEqualTo("Alice"))) .build() .render(RenderingStrategy.MYBATIS3); List<Employee> employees = mapper.selectMany(selectStatement); 这是一个新库的说,至少:
需要额外依赖 mybatis-dynamic-sql
<dependency> <groupId>org.mybatis.dynamic-sql</groupId> <artifactId>mybatis-dynamic-sql</artifactId> <version>1.0.0</version> </dependency> Java 8 及以上
MyBatis 3.4.2 及以上
MyBatis Generator (>= 1.3.6) 也已经提供支持,只需要将 context 的 targetRuntime 属性更改为 MyBatis3DynamicSQL 即可生成新的动态 SQL。
<generatorConfiguration> ... <context ... targetRuntime="MyBatis3DynamicSQL" ...> ... </context> </generatorConfiguration> 该模式下不再生成 XML,不再生成 Example 类。文档里也推荐:join 操作要用到的 resultMap 应该是 XML 文件中的唯一元素。
话说个人还是挺偏好 XML 的 ( ̄ ̄) ,不知道各位老司机怎么看?
写了一篇文章简单介绍一下基本的使用 Mybatis Dynamic SQL - 重新定义 Mybatis 动态 SQL (〃ω)
1 Cbdy Feb 7, 2018 via Android 这不是。。jooq 吗 |
2 xiaoyangsa Feb 7, 2018 咋整,用了国产的了~~ 复杂的宁愿丢 xml 里。简单的这样搞搞差不多 |
3 nita22 Feb 7, 2018 XML 里面直接写 SQL 语句才是最直观的吧,用这个动态 SQL 反而使得 SQL 语句跟业务代码糅杂起来了 |
4 jorneyr Feb 7, 2018 写了这么多,有 SQL 清晰么 |
5 l00t Feb 7, 2018 via Android 改成这样有什么好处吗? |
6 iyaozhen Feb 7, 2018 via Android 一直不喜欢.where 这种写法,业务稍微复杂点就懵逼了。一个多月不写就忘了。还是 sql 直接 |
7 kran Feb 7, 2018 via iPhone 好处是类型安全吧 |
8 Rickkkkkkk Feb 7, 2018 sql 还绑在代码里不恶心吗 xml 多简洁 |
9 lonenol Feb 7, 2018 ...那还不如用 JPA... |
10 yejinmo Feb 7, 2018 折腾来折腾去本质不还是 sql 么。。真是搞不懂非要简单问题复杂化 |
11 lhx2008 Feb 7, 2018 via Android 挺好的,但是关联查询,自动装配好像都没有 |
12 iyangyuan Feb 8, 2018 via iPhone 这样不仅损失性能,也增加了复杂 sql 维护难度,又徒增了学习成本 |
13 NullException Feb 8, 2018 @iyangyuan 看到他那种用法让我想起 myBatis Plus,写写简单的 sql 还可以,复杂的还是自己来 |
14 CtrlSpace Feb 8, 2018 Android 转 Java 的觉得,xml 真是很难看,不如代码。 |
15 CtrlSpace Feb 8, 2018 喜欢 xml 的只是习惯了 xml,对于没接触过的人来说,代码(或许)是最舒服的。 |
16 bobuick Feb 8, 2018 我猜,因为喜欢封装。 |
17 itll Feb 8, 2018 就是不习惯 jpa 才用 Mybatis,还是直接 sql 方便 |
18 0Kelvin Feb 8, 2018 emmm. Java 的一套怎么感觉在慢慢的向 C#靠近呢。 |
19 olOwOlo OP (〃ω) 感觉不怎么受欢迎的样子呢~~ |
23 xiangR Feb 8, 2018 有的时候调试 sql 语句,直接把 xml 上的东西复制到 navicat 中,运行查看结果。 写在代码里面,好像只能使用启动工程的形式调试了。 而且对于大 sql,用这种方式,简直了... |
24 kzzhr Feb 18, 2018 正在造轮子: https://github.com/Kretech/Loulan#quick-start 不过更强调复杂查询下的查询复用 |
25 LeeSeoung Feb 22, 2018 - -不如 xml 写 sql 来的直接 |