Mybatis学习笔记9 动态SQL

这篇具有很好参考价值的文章主要介绍了Mybatis学习笔记9 动态SQL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Mybatis学习笔记8 查询返回专题_biubiubiu0706的博客-CSDN博客

动态SQL的业务场景:

例如

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

批量删除

get请求 uri?id=18&id=19&id=20  或者post  id=18&id=19&id=20

String[] ids=request.getParameterValues("id")

那么这句SQL是需要动态的

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

还有像如下的多条件查询

可能不提供条件:  0条件  select & from t_product;

当选择了一个或多个条件: select * from t_product where 条件1=#{xxx}  and 条件2=#{xxx2} 

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

新建模块

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记Mybatis学习笔记9 动态SQL,mybatis,学习,笔记Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

1.     if标签

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

2.where标签 作用让where子句更加动态智能

当所有条件都为空时,where标签保证不会生成where子句

自动去除某些条件前面多余的and和or

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

3.trim标签

prefix:在trim标签中的语句前添加内容

suffix:在trim标签中的语句后 添加 内容

prefixOverrides:前缀覆盖掉(去掉) 文章来源地址https://www.toymoban.com/news/detail-732718.html

suffixOverrides:后缀 覆盖掉(去掉)
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
trim会自动判断里面if来考虑是否添加where    并且自动判断是否去掉 and或者or
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
4.set标签
主要使⽤在update语句当中,⽤来⽣成set关键字,同时去掉最后多余的“,”
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
5.choose when otherwise
< choose >
< when ></ when >
< when ></ when >
< when ></ when >
< otherwise ></ otherwise >
</ choose >
一般<choose>会和<when><otherwise>联合使用
等价于
if (){
} else if (){
} else if (){
} else if (){
} else {
}
只有⼀个分⽀会被选择!!!!  只要一个分支执行,条件语句结束     只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!只有⼀个分⽀会被选择,且必会选择!!!!
比如说下面的三个参数都是""或者 null
那么  最后执行
select * from t_car where car_type=  ""  或者 select * from t_car where car_type= null

实际使用比如
比如需求是:先根据品牌查,没有提供品牌按价格查,没有提供价格按类型查
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
这里注意下
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
6.foreach标签  
循环数组或集合,动态⽣成sql
批量删除:
id=1&id=2&id=3
String[] ids=request.getParameterValues("id");
String[] ids={"1","2","3"}
int[] intArray = new int[idValues.length];
for (int i = 0; i < idValues.length; i++) {
        try {
                intArray[i] = Integer.parseInt(idValues[i]);
        } catch (NumberFormatException e) {
}
delete from t_car where id in ( 1 , 2 , 3 );
delete from t_car where id = 1 or id = 2 or id = 3 ;
第一种方式: delete from t_car where id in ( 1 , 2 , 3 );
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
第二种方式: delete from t_car where id = 1 or id = 2 or id = 3 ;
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
批量插入
比如  一次插入多条数据
insert into user(id,name,age) values(1,'zs',18),(2,'ls',19),(3,'ww',21)
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记
7 sql标签与include标签
sql标签⽤来声明sql⽚段
include标签⽤来将声明的sql⽚段包含到某个sql语句当中
作⽤:代码复⽤。易维护。
例如
Mybatis学习笔记9 动态SQL,mybatis,学习,笔记

到了这里,关于Mybatis学习笔记9 动态SQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis 03 -MyBatis动态SQL与分页插件

    MyBatis的映射文件中支持在基础SQL上添加一些逻辑操作,并动态拼接成完整的SQL之后再执行,以达到SQL复用、简化编程的效果。 动态查询 where标签和if标签组合使用 动态修改 1.1 sql sql标签的作用是提取公共的sql代码片段 sql id属性:唯一标识 include refid属性:参照id 动态查询

    2023年04月15日
    浏览(43)
  • 【MyBatis】2、MyBatis 的动态 SQL 和增删改操作

    注意: openSession() 的参数默认值是 false (不自动提交事务) 🌼 设置新插入记录的主键(id)到参数对象中 动态 SQL 官方文档:https://mybatis.org/mybatis-3/zh/dynamic-sql.html ☆ 批量插入: 💦 批量添加的执行效率比 多次 单个添加的执行效率要高,但是无法获取到新插入的记录的主

    2024年02月07日
    浏览(50)
  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第三天)动态SQL

    昨天我们深入学习了 Mybatis的核心对象SqlSessionFactoryBuilder , 掌握MyBatis核心配置文件以及元素的使用 ,也掌握MyBatis映射文件及其元素的使用。那么今天我们需要掌握的是更加复杂的查询操作。 学会编写MyBatis中动态SQL 学会MyBatis的条件查询操作 学会MyBatis的更新操作 学会MyBati

    2024年02月11日
    浏览(54)
  • MyBatis之动态sql

    目录 一、MyBatis动态sql 1.1 是什么 1.2 作用 1.3 优点 1.4 特殊标签 1.5 代码演示 二、#和$的区别 2.1 #使用 2.2 $使用 2.3 综合 2.4 代码演示 三、resultType与resultMap的区别 3.1 关于resultType 3.2 关于resultMap   3.3 两者区别 3.4 代码演示 是一种在SQL语句中根据不同条件动态拼接SQL的方式。通

    2024年02月11日
    浏览(38)
  • MyBatis - 动态 SQL

    动态 SQL 是 MyBatis 提供的一个非常强大的功能,它可以让我们在运行时构建 SQL 语句。这意味着我们可以根据应用程序的需求来构建符合要求的 SQL。通常情况下,这是非常有用的,因为有时我们不知道要查询哪些表,或者要查询哪些列。此外,动态 SQL 还可以用来构建动态修改

    2024年02月07日
    浏览(52)
  • 【MyBatis】动态SQL

    动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。具体的定义大家可以参

    2024年01月17日
    浏览(45)
  • MyBatis:动态 SQL 标签

    MyBatis 动态 SQL 标签 ,是一组预定义的标签,用于构建动态的 SQL 语句,允许在 SQL 语句中使用条件、循环和迭代等逻辑。通过使用动态 SQL 标签,开发者可以根据不同的条件和参数生成不同的 SQL 语句,实现更加灵活的数据访问操作。但是,需要谨慎处理 SQL 注入问题,确保所

    2024年02月04日
    浏览(60)
  • mybatis----动态Sql

    1.if标签 通过if标签构建动态条件,通过其test属性的true或false来判断该添加语句是否执行。 mapper接口 映射文件 这里test中的属性名与Account类中的属性名一致。例如:上述文件的第一个if标签中的id严格与Account中属性名id一致。 测试 结果: 执行效果等同于select * from account whe

    2024年01月23日
    浏览(43)
  • Mybatis-动态SQL

    Mabits是一个Java持久化框架,它提供了动态SQL的功能。动态SQL是一种根据不同条件动态生成SQL语句的技术。 在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。 动态SQL可以让开

    2024年02月06日
    浏览(40)
  • MyBatis 实现动态 SQL

     MyBatis 中的动态 SQL 就是 SQL语句可以根据不同的情况情况来拼接不同的sql。 本文会介绍 xml 和 注解 两种方式的动态SQL实现方式。 先创建一个数据表,SQL代码如下: 数据库表和JAVA对象的对应如下:   平时在注册账号时会有一些非必填项,而我们就可以使用 if 标签来跟据条

    2024年02月19日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包