大家好,我是IT修真院深圳分院第4期学员,一枚正直善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务10中,task1部分的知识点——mybatis常用标签和动态查询
一、背景介绍
在日常开发中,基本的静态的查询情况已经足够对付。但有些时候,我们想寻求一个能够根据参数自动调整SQL查询的方法。如,学校教导主任发现一个学生违反校纪校规,但是并没有当场抓住该学生,于是,他通过已经掌握的学生信息如【性别】,【年纪】,【身高】等信息来查询符合条件的学生。但是,这些信息的数量每次得到的数量都是不同的。换句话说,我们在设计系统时,无法确定传入参数的数量。也没有获得一个足以唯一确定这个对象的主键【如学号】。这便需要使用到动态查询功能。
二、知识剖析
<if>标签
说明: 若符合 标签标签中的条件,则在SQL语句上添加<if></if>内的条件
常见场景:应用场景广泛,若条件不为null,添加SQL语句,在update中最为常见,也可以在insert中使用,避免插入null,导致默认值失效,当然其他类型例如select也可以使用
<where>标签
说明:避免所有条件都为空的时候出现“select * from user where ”这种会出错的情况,当然我们也可以在where后面加入“1=1”简单的解决,但是有更简单的方法,何乐而不为呢?
<set>标签
<set>标签元素会动态前置 SET 关键字,同时也会消除无关的逗号,因为用了条件语句之后很可能就会在生成的赋值语句的后面留下这些逗号,和相同,也是避免SQL语句出错而设置的一个标签
<choose>标签
说明:自带<when>和 <otherwise>两个标签,标签可以有多个,若其中一个内条件符合,则终止 <choose>;若无条件符合,则采用<otherwise>中的语句
常见场景:复用单条件SQL语句,例如查找一个用户,按“年龄查找”,或按“性别”查找等
<foreach>标签
说明:遍历传入的List、collection或map参数,依次使用集合中的元素执行SQL语句
三、常见问题
如果没有mybatis,又想要使用动态查询怎么办?
四、解决方案
使用葡萄藤的工具类库,SQLUtil,将MAP转化为SQL语句,再使用JDBC或JDBCTemplate查询
六、扩展思考
七、参考文献
1.CSDN:http://blog.csdn.net/ABCD898989/article/details/51218551
2.mybatis官方文档
八、更多讨论
提问1.还有一个trim标签,那有什么用?
答:这个是和<where><set>是一样的功能,即有条件的增加或删除一个字符串或标记
提问2:平时我们插入不用动态标签页没有什么问题
答:这是因为平时我们不设默认值,一旦设定默认值,还是要使用动态插入的
提问3:<set>标签只能用户update吗?
答:没有错,因为sql语句本身的set本来就是用于update语句
感谢大家观看
mybatis常用标签和动态查询_腾讯视频
PPT:PPT
视频:视频
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
我的邀请码:13299900,或者你可以直接点击此链接:http://www.jnshu.com/login/1/13299900
网友评论