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; |
这个接口是个空接口,后面有用到的方法再往接口中添加.