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

Java-MyBatis框架-3(动态sql语句,多表联查)

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

Java-MyBatis框架-3(动态sql语句,多表联查)

一、动态sql语句

什么是动态sql:根据参数的值,判断sql的条件。

MyBatis 的强大特性之一便是它的动态 SQL,即拼接SQL字符串。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。

通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中。

动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元素需要来了解。MyBatis 3 大大提升了它们,现在用不到原先一半的元素就可以了。MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素。

mybatis中的动态sql标签

1、if标签--单条件判断

可以通过条件判断,动态拼接sql

if标签一般用于非空验证,如上例,若id为空,if标签里的代码,将不会执行,反之,则会执行。


    
        select * from teacher where 1=1
        
        
            and id=#{id}
        
        
            and name=#{name}
        
    
2、choose--多条件分支判断

    
        select *from teacher
        
            
                and id=#{id}
            
            
                and name=#{name}
            
        
    
4、foreach标签

  foreach标签可迭代任何对象(如数组、集合(list,set,map)等)和任何的字典或者数组对象传递给foreach作为集合参数,当使用可迭代对象或者数组时,index是当前迭代的次数,item的值是本次迭代获取的元素。当使用字典(或者Map.Entry对象的集合)时,index是键,item是值。collection标签可以填('list','array','map')。

  foreach元素的属性主要有 item,index,collection,open,separator,close。

collection:指定要循环的目标数据的类型,数组(array) list集合(list)

item:存储遍历的某个数据对象

open:拼接的字符串的前缀

close:拼接的字符串的后缀

separator:拼接内容的分隔符

使用foreach批量查询:



    
                //在这里我们就可以通过 include标签使用我们定义的sql
        select from tb_student s join tb_class c on s.class_id=c.c_id where stu_id=#{id};
    
6.mybatis处理特殊字符

在xml文件中尽量避免写大于,小于,大于等于,小于等于  &

两种方式

第一种使用转义字符

 第二种使用

含有特殊符号的代码

]]>

 
        select * from student where name like '%${name}%'
    

第二种:使用字符串函数 完成拼接 concat



        select from tb_student s join tb_class c on s.class_id=c.c_id where stu_id=#{id};
    

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

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

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