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

Mybatis学习(四)—— 动态sql

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

Mybatis学习(四)—— 动态sql

文章目录
  • 为什么用
  • if
  • choose (when, otherwise)
  • trim (where, set)

为什么用

当我们需要根据不同的情形生成不同sql语句的情况下,就需要动态sql来实现了。
比如之前超市管理系统项目中的搜索功能,可以无条件搜索,也可以根据姓名关键字搜索,也可以根据角色分类搜索等等不同情况,用动态sql来实现就轻而易举了。

在MyBatis之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。

if

包含where子句的可以用if标签,但是要注意主句where中一定要有一个条件,即where不能直接接and。下面的例子中1=1就是起这个作用的。


    select * from mybatis.blog where 1=1
    
        and title = #{title}
    
    
        and author = #{author}
    


choose (when, otherwise)

where配合choose使用,简单且适合大多数场景。

where 元素只会在子元素返回任何内容的情况下才插入 “WHERe” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。

有时候,我们不想使用所有的条件,而只是想从多个条件中选择一个使用。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。

这两个配合起来,就是下面例子的做法


    select * from mybatis.blog
    
        
            and title = #{title}
        
        
            and author = #{author}
        
    





    update mybatis.blog
    
        
            title = #{title},
        
        
            author = #{author}
        
    
    where id = #{id}


我们做的事情,就是在mapper.xml的SQL层面,做了一个逻辑处理,就形成了我们的动态sql

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

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

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