mybaties第4章-动态sql-理论.ppt

上传人:小飞机 文档编号:6512852 上传时间:2023-11-08 格式:PPT 页数:14 大小:1.17MB
返回 下载 相关 举报
mybaties第4章-动态sql-理论.ppt_第1页
第1页 / 共14页
mybaties第4章-动态sql-理论.ppt_第2页
第2页 / 共14页
mybaties第4章-动态sql-理论.ppt_第3页
第3页 / 共14页
mybaties第4章-动态sql-理论.ppt_第4页
第4页 / 共14页
mybaties第4章-动态sql-理论.ppt_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《mybaties第4章-动态sql-理论.ppt》由会员分享,可在线阅读,更多相关《mybaties第4章-动态sql-理论.ppt(14页珍藏版)》请在三一办公上搜索。

1、第四章 动态SQL,本章内容,动态sql技术if标签choose(when,otherwise)标签trim(where,set)标签foreach标签,本章目标,理解动态sql的原理熟悉动态sql技术中的标签掌握动态sql的使用,动态SQL概述,为什么使用动态SQL技术?使用JDBC实现多条件查询时,会出现如下代码:,StringBuilder sql=new StringBuilder(select*from blog where 1=1);if(blog!=null)if(blog.getAuthor()!=null)if(blog.getAuthor().getId()!=0)sql.

2、append(and author_id=+blog.getAuthor().getId();if(blog.getTitle()!=null)sql.append(and title like%+blog.getTitle()+%);if(blog.getContent()!=null)sql.append(and content like%+blog.getContent()+%);if(blog.getType()!=0)sql.append(and type=+blog.getType();,代码冗余,复杂,动态SQL技术,MyBatis的一个强大的特性之一是其动态SQL功能。如果开发

3、者有使用JDBC或其他相似框架的经验,则其肯定明白根据条件串联SQL字符串非常困难,同时还要确保不能忽略空格或在列表的最后省略逗号等。使用动态SQL可以彻底解决这种问题,省略代码编写中繁琐的SQL拼接操作。在Mybatis中,常用的标签元素包括if、choose(when,otherwise)、trim(where,set)和foreach。,IF标签,select id,author_id as author,title,content,create_time as createTime,type from BLOG where type=1 and title like#title and

4、 content like#content,如果没有传递title,则按content条件来查询;如果没有传递content,则按title来进行查询。如果两者都没有传递,则查询所有type为1的博客信息。如果两者都传递,则按照上述两个条件一同查询。,IF标签,查询符合条件的博客信息标题中有“美斯坦福”内容中有“学生就业率高”关键字,choose、when、otherwise,choose标签按顺序判断其内部when标签中的test条件是否成立,如果有一个成立,则choose结束。当choose中所有when的条件均不满足时,则使用otherwise中的sql条件。,select id,aut

5、hor_id as author,title,content,create_time as createTime,type from BLOG where 1=1 and title like#title and content like#content and type=1,生成SQL语句没有使用content条件。仅能使用choose标签中的一种条件或只使用默认条件,不会同时使用choose标签中的多个条件。,where、set、trim,select id,author_id as author,title,content,create_time as createTime,type f

6、rom BLOG and type=1 and title like#title and content like#content,where、set、trim,如果发生如下情况怎么办?where和and关键字相连出现多余的逗号,使用Where+if标签使用update+if标签,foreach,foreach元素是非常强大的,它允许指定一个集合,声明集合项和索引变量,它们可以用于元素体内。其同时也允许指定开放和关闭的字符串,在迭代之间放置分隔符。该元素非常智能化,不会偶然地附加多余的分隔符。,select id,author_id as author,title,content,create

7、_time as createTime,type from BLOG where type in#typeIds,foreach,实现查询某几类的所有博客信息,总结,动态SQL技术可以灵活处理多条件查询,无须在代码中动态拼接SQL语句,从而简化了数据访问层的开发。在使用Mybatis的动态SQL时,主要通过以下标签来实现:(1)if标签:根据test的结果动态为SQL拼接条件表达式,多个if的条件以AND来连接。(2)choose(when,otherwise)标签:根据when中test的结果选择一个条件拼接到SQL语句中,如果所有when均不满足,则选择otherwise中的条件。(3)trim(where,set)标签:where+if可以动态地添加条件,set+if可以动态地实现更新相应的值,使用trim可以替代where或set。(4)foreach标签:该标签通常结合in子句使用,可以通过循环迭代条件值来进行相关的操作。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号