1.Mybatis注解开发之动态SQL语句

背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句.
注意:Mybatis的动态sql语句开发, 可以分为三种写法:

1.脚本动态sql语句
2.方法中定义sql
3.结构化sql

2.案例环境

2.1.实体类 User(提供了Get、Set、toString方法)

2.2.接口 IUserDao

2.3.需求

使用动态sql, 执行IUserDao接口内的findUserByCondition方法
如果username属性有值,则查询条件中加上username=值
如果sex属性有值,则查询条件也商家 sex=值

3.动态SQL实现

3.1.脚本动态SQL语句


把xml中的动态sql语句, 直接拷贝到注解中, 并使用script标签包括起来即可

3.2.方法中定义sql语句

3.2.1.需要定义一个专门用于生成动态sql语句的类. 并在类中定义一个专门给findUserByCondition()方法生成sql语句的方法.

3.2.2.可以在方法中利用SELECT( ), FROM( ), WHERE( )等动态生成sql语句.

3.2.3.把该类的该方法,配置到接口的findUserByCondition()方法上,表示该方法所使用的查询的sql语句,由UserDynaSqlProvider类的findUserByConditionSql方法提供

3.3.结构化sql语句

注意: 该方式和方式2一模一样, 只是在组装sql语句时的语法有少许区别.

3.3.1需要定义一个专门用于生成动态sql语句的类. 并在类中定义一个专门给findUserByCondition()方法生成sql语句的方法.

3.3.2.可以在方法中利用SELECT( ), FROM( ), WHERE( )等动态生成sql语句

3.3.3.把该类的该方法,配置到接口的findUserByCondition()方法上,表示该方法所使用的查询的sql语句,由UserDynaSqlProvider类的findUserByConditionSql方法提供

测试

如果测试代码如下:

则程序运行产生的sql语句是:

select * from user where (username = ?)

运行结果是:

如果测试代码如下:

则程序运行产生的sql语句是:

select * from user where (username = ? and sex = ?)

运行结果是:

更多推荐

Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)