栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis动态SQL详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis动态SQL详解

文章目录
    • 动态SQL的作用
    • 动态SQL都有哪些?
      • trim的使用方法:
      • where的使用方法
      • set的使用方法
      • foreach的使用方法
      • if的使用方法
      • choose、when、otherwise的使用方法
      • bind的使用方法
    • 动态SQL的执行原理

动态SQL的作用

动态SQL,就是将查询条件中的判断语句,提前在代码中判断完成,然后在数据库中执行的就是简单的,可利用索引的SQL语句了。
它具有完成逻辑判断和动态拼接sql功能。

就比如这样的场景:
我们在进行查询时有一种常见的逻辑:当我们填写了这个查询条件,就查出符合该条件的数据,我们没有填写查询条件时,就查询出全部数据。
使用静态SQL可能会使数据库无法利用到索引,降低它的性能。

动态SQL都有哪些?

有九种动态SQL标签:

trim
where
set
foreach
if
choose
when
otherwise
bind

trim的使用方法:

通过trim标签,可以动态构建where、set等条件

查询操作(条件查询):

    
        select id,name,age,email,address
        from user
        
            and name like concat('%', #{name}, '%')
             and school = #{school}
        
    

更新操作:

    
        update user
        
            username = #{username},
        
        where id = #{id}
    

新增操作:

  
        insert into com_team_sh
        
            username,
   			age,
        
        
            #{username},
            #{age},
        
    

prefix :前缀添加的内容
suffix :后缀添加的内容
prefixOverrides :前缀需要覆盖的内容,一般是第一个判断条件前面多余的结构,如,在第一个判断条件前多了‘and’
suffixOverrides :后缀需要覆盖的内容 一般是最后一个数据的最后面的符号,如:set的时候,最后一个值的后面多一个逗号

where的使用方法

where会自动判断SQL语句,只有< where>内的条件成立时,才会拼接SQL中加入where关键字,否则不会添加,还会去除多余的“AND”或“OR”.

查询操作(条件查询):

    
        select id,name,age,email,address
        from com_user
        WHERe is_deleted=0
        
            and name like concat('%', #{name}, '%')
            and school=#{school}
            and role='队长'
        
    
bind的使用方法

从OGNL表达式中创建一个变量,并将其绑定到上下文,常用于模糊查询的SQL中

例如:
根据name进行模糊查询

    

如果不传name的值,会报空指针异常。
所以上面这种写法一定要传一个name值

动态SQL的执行原理

使用OGNL从SQL参数对象中计算表达式的值,根据表达式的值动态拼接SQL,以此来完成动态SQL的功能。

OGNL表达式是Object-Graph Navigation Language的缩写,是一种功能强大的表达式语言,通过简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转换.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号