欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > MyBatis进阶

MyBatis进阶

2025/4/19 16:31:01 来源:https://blog.csdn.net/2201_75880772/article/details/145336180  浏览:    关键词:MyBatis进阶

1. 动态SQL

        1.1 <if>标签的使用(xml版本)
 

        动态 SQL 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接。

        现在有一个需求.注册分为两种字段:必填字段和⾮必填字段,那如果在添加用户的时候有不确定的字段传⼊,程序应该如何实现呢?     

                我们使用sql语句来进行实现

         java代码的实现,此时我们使用<if>标签实现动态sql

        我们重新分析一下需求

                运行结果        此时如果有多个属性都是非必选字段,我们通过navicat来进行设置

        java代码

        但是如果字段太多,会因为逗号报错,成功案例

        失败案例: 我们如果只设置中间的字段,我们发现多了个逗号

        

        为了解决这个问题我们引入<trim>标签

        1.2 <trim>标签的使用(xml版本)

        标签中有如下属性:

        • prefix:表⽰整个语句块,以prefix的值作为前缀

        • suffix:表⽰整个语句块,以suffix的值作为后缀

        • prefixOverrides:表⽰整个语句块要去除掉的前缀

        • suffixOverrides:表⽰整个语句块要去除掉的后缀

        java代码演示

         1.3 <if>标签的使用(注解方式,了解即可很复杂)     

                建议放在记事本里面进行修改,我们使用<script>标签把它们括起来

                

        一般写动态sql,xml和注解要么一起用,要么只用xml

        1.4 <where标签>

                我们有个应用场景,我们根据用户的选项来生成商品的信息,也就是动态的生成where条件

        java代码        但是我们发现一个和刚刚多出来的,一样的问题

        此时我们再使用<trim>标签来解决

        where标签的一些写法提示

        where标签的其他写法

        1.5 <set>标签 

                <set>标签的作用

                        1. 生成set关键字

                        2. 去掉整个代码后的,

        简而言之: 实现选择性更新,没有值的不用更新

        需求: 根据传⼊的⽤⼾对象属性来更新用户数据,可以使⽤标签来指定动态内容.

        接⼝定义: 根据传⼊的用户 id 属性,修改其他不为 null 的属性

        java代码

        不使用<set>标签

        

        使用<set>标签(这个标签会自动把我们后面的,给去除

        1.6 <foreache>标签

        对数组,集合进行遍历的时候使用这个标签.该标签有以下属性

        • collection:绑定⽅法参数中的集合,如 List,Set,Map或数组对象

        • item:遍历时的每⼀个对象

        • open:语句块开头的字符串

        • close:语句块结束的字符串

        • separator:每次遍历之间间隔的字符串

        应用场景: 批量操作(批量更新,批量删除...)

        

        mybatis中文网: 动态 SQL_MyBatis中文网

        我们学习了这么多标签,发现还是很麻烦,有很多的冗余代码,因此我们引入了<sql>标签和<include>标签来进行使用

        1.7 <sql>标签和<include>标签 

        

        Mybatis注解 VS xm

    

        1.8 使用插件来生成xml文件

        SpringBoot引入MybatisGenerator

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com