Mybatis 注解开发之动态 SQL 语句
导读:
使用 mybatis 的注解开发动态 Sql 会比较麻烦, 很不方便, 所以不太推荐使用.
该文章以查询作为案例,演示动态 sql 语句.
注意:
Mybatis 的动态 sql 语句开发, 可以分为三种写法:
- 脚本动态 sql 语句
- 方法中定义 sql
- 结构化 sql
0. 案例环境:
a. 实体类 User
实体类的属性提供了 get 和 set 方法
实体类提供了 toString()方法
b. 接口 IUserDao
c. 需求
使用动态 sql, 执行 IUserDao 接口内的 findUserByCondition 方法
如果 username 属性有值,则查询条件中加上 username=值
如果 sex 属性有值,则查询条件也商家 sex=值
动态 Sql 实现:
1.脚本动态 sql 语句
把 xml 中的动态 sql 语句, 直接拷贝到注解中, 并使用 script 标签包括起来即可.
2.方法中定义 sql 语句
2.1 需要定义一个专门用于生成动态 sql 语句的类. 并在类中定义一个专门给
findUserByCondition()方法生成 sql 语句的方法.
2.2 可以在方法中利用 SELECT( ), FROM( ), WHERE( )等动态生成 sql 语句.
2.3 把该类的该方法,配置到接口的 findUserByCondition()方法上
表 示 , 该方法所使用的查询的 sql 语 句 , 由 UserDynaSqlProvider 类 的
findUserByConditionSql 方法提供
3.结构化 sql 语句
注意: 该方式和方式 2 一模一样, 只是在组装 sql 语句时的语法有少许区别.
3.1 需要定义一个专门用于生成动态 sql 语句的类. 并在类中定义一个专门给
findUserByCondition()方法生成 sql 语句的方法.
3.2 可以在方法中利用 SELECT( ), FROM( ), WHERE( )等动态生成 sql 语句.
3.3 把该类的该方法,配置到接口的 findUserByCondition()方法上
表示,该方法所使用的查询的 sql 语句,由 UserDynaSqlProvider 类的
findUserByConditionSql 方法提供
测试:
如果测试代码如下:
则程序运行产生的 sql 语句是:
运行结果是:
如果测试代码如下:
则程序运行产生的 sql 语句是:
运行结果是: