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

举报
baidaguo 发表于 2022/05/25 23:34:36 2022/05/25
【摘要】 1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动态...

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 = ?)

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

文章来源: baidaguo.blog.csdn.net,作者:白大锅,版权归原作者所有,如需转载,请联系作者。

原文链接:baidaguo.blog.csdn.net/article/details/118931029

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。