10.2 MyBatis动态SQL
在实际项目开发中,经常需要根据不同条件拼接SQL
语句,拼接时一定不能忘了必要的空格,有时候还要注意省略掉列名列表最后的逗号,等等。在使用JDBC
或其他类似持久层框架操作数据库时,处理这种情况是非常麻烦的,甚至可以用痛苦来形容,而在MyBatis
中利用动态SQL
这一特性可以很简单地解决这个问题.
动态SQL
元素和使用JSTL
或其他类似基于XML
的文本处理器相似,MyBatis
采用功能强大的基于OGNL
的表达式来完成动态SQL
。OGNL
的表达式可以用在任意的SQL
映射语句.
常用的动态SQL
元素包括:
if
choose
(when
,otherwise
)where
set
foreach
bind
下面我们就用一个简单示例来看看在MyBatis
中怎么使用动态SQL
.
创建测试项目框架
创建数据库表
首先,给之前创建的mybatis
数据库创建一个表tb_employee
,并插入测试数据脚本如下:
在mybatis
数据库中执行SQL
脚本,完成创建数据库和表的操作。
1 | # 创建数据表 |
创建持久化对象
接下来,创建一个Employee
对象映射tb_emp1oyee
表。
1 | package domain; |
创建Mapper.xml映射文件
1 |
|
这个是个空的映射文件,后面用到的标签再往里面添加.
创建mapper接口
1 | package mapper; |
这个接口是可空接口,后面有用到的方法再往接口中添加.