JAVAEE细细看 框架14 - Mybatis注解开发之动态 SQL 语句

本文详细介绍使用Mybatis注解进行动态SQL语句开发的三种方法:脚本动态SQL、方法内定义SQL及结构化SQL。通过具体案例,演示如何根据实体类属性动态生成查询条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis 注解开发之动态 SQL 语句

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

  1. 脚本动态 sql 语句
  2. 方法中定义 sql
  3. 结构化 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 语句是:
在这里插入图片描述

运行结果是:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值