mybaties第4章_动态sql-理论.ppt_第1页
mybaties第4章_动态sql-理论.ppt_第2页
mybaties第4章_动态sql-理论.ppt_第3页
mybaties第4章_动态sql-理论.ppt_第4页
mybaties第4章_动态sql-理论.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 动态SQL 本章内容 u动态sql技术 uif标签 uchoose(when,otherwise)标签 utrim(where,set)标签 uforeach标签 本章目标 u理解动态sql的原理 u熟悉动态sql技术中的标签 u掌握动态sql的使用 动态SQL概述 u为什么使用动态SQL技术? u使用JDBC实现多条件查询时,会出现如下代码: StringBuilder sql = new StringBuilder(“select * from blog where 1=1 “); if(blog!=null) if(blog.getAuthor( )!=null) if(blog.getAuthor( ).getId( )!=0) sql.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技术 uMyBatis的一个强大的特性之一是其动态SQL功能。如果开发者有使用 JDBC或其他相似框架的经验,则其肯定明白根据条件串联SQL字符串 非常困难,同时还要确保不能忽略空格或在列表的最后省略逗号等。使 用动态SQL可以彻底解决这种问题,省略代码编写中繁琐的SQL拼接 操作。 u在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 content like #content 如果没有传递title,则按content条件来查询;如果没有传 递content,则按title来进行查询。如果两者都没有传递, 则查询所有type为1的博客信息。如果两者都传递,则按照 上述两个条件一同查询。 IF标签 u查询符合条件的博客信息 n标题中有“美斯坦福” n内容中有“学生就业率高”关键字 choose、when、otherwise uchoose标签按顺序判断其内部when标签中的test条件是否成立,如 果有一个成立,则choose结束。当choose中所有when的条件均不 满足时,则使用otherwise中的sql条件。 select id, author_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 from BLOG and type=1 and title like #title and content like #content where、set、trim u如果发生如下情况怎么办? nwhere和and关键字相连 n出现多余的逗号 n u使用Where+if标签 u使用update+if标签 foreach uforeach元素是非常强大的,它允许指定一个集合,声明集合项和索引 变量,它们可以用于元素体内。其同时也允许指定开放和关闭的字符串 ,在迭代之间放置分隔符。该元素非常智能化,不会偶然地附加多余的 分隔符。 select id, author_id as author, title, content, create_time as createTime, type from BLOG where type in #typeIds foreach u实现查询某几类的所有博客信息 总结 u动态SQL技术可以灵活处理多条件查询,无须在代码中动态拼接SQL 语句,从而简化了数据访问层的开发。 u在使用Mybatis的动态SQL时,主要通过以下标签来实现: (1)if标签:根据test的结果动态为SQL拼接条件表达式,多个if的条件以 AND来连接。 (2)choose(when,otherwise)标签:根据when中test的结果选择一个条件拼 接到SQL语句中,如果所有when均不满足,则选择otherwise中的条件。 (3)trim(wher

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论