10.2 MyBatis动态SQL 10.2.0测试项目框架
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
.
创建测试项目
项目结构
展开/折叠
G:\workspace_web2\MyDynamicSQLTest ├─src\ │ ├─db.properties │ ├─domain\ │ │ ├─Employee.java │ │ └─tb_employee.sql │ ├─fractory\ │ │ └─SqlSessionFratoryTools.java │ ├─log4j.xml │ ├─log4j2.xml │ ├─mapper\ │ │ ├─EmployeeMapper.java │ │ └─EmployeeMapper.xml │ ├─mybatis-config.xml │ ├─tb_employee.sql │ └─test\ │ ├─BindTest.java │ ├─ChooseTest.java │ ├─DoubleIfTest.java │ ├─ForEachTest.java │ ├─OneIfTest.java │ ├─SetTest.java │ └─WhereTest.java └─WebContent\ ├─META-INF\ │ └─MANIFEST.MF └─WEB-INF\ └─lib\ ├─ant-1.9.6.jar ├─ant-launcher-1.9.6.jar ├─asm-5.2.jar ├─cglib-3.2.5.jar ├─commons-logging-1.2.jar ├─javassist-3.22.0-CR2.jar ├─log4j-1.2.17.jar ├─log4j-api-2.3.jar ├─log4j-core-2.3.jar ├─mybatis-3.4.5.jar ├─mysql-connector-java-5.1.44-bin.jar ├─ognl-3.1.15.jar ├─slf4j-api-1.7.25.jar └─slf4j-log4j12-1.7.25.jar
创建数据库表
首先,给之前创建的mybatis
数据库创建一个表tb_employee
,并插入测试数据:
1 | # 创建数据表 |
创建持久化对象
接下来,创建一个Employee
对象映射tb_emp1oyee
表。
1 | package domain; |
创建Mapper.xml映射文件
1 |
|
这个是个空的映射文件,后面用到的标签再往里面添加.
创建mapper接口
1 | package mapper; |
这个接口是个空接口,后面有用到的方法再往接口中添加.