快速了解这是什么:
全新的 ByExample 方法
List<Employee> employees = mapper.selectByExample()
.where(id, isLessThan(10), and(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 (〃ノωノ)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.