版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务3.1动态SQL
——多条件查询会联合使用<if>、<where>元素实现动态条件查询操作会联合使用<if>、<trim>元素实现动态条件查询操作会联合使用<choose>、<when>、<otherwise>元素实现动态条件查询操作1本节任务
在实际项目开发中,往往需要根据不同的条件组合来筛选数据,因此多条件查询是一种较为常见的形式。MyBatis可以通过<if>、<choose>、<where>、<foreach>等元素动态生成SQL语句,从而更好地满足开发人员的需求。<if>元素和<where>元素联合使用<if>元素用于进行条件判断,只有满足条件时,其内部的SQL片段才会被添加到最终的SQL语句中,基本语法如下。<where>元素能自动处理WHERE关键字及多余的AND、OR运算符,让SQL语句更加准确和规范。2知识支撑1<iftest="判断条件">2待拼接的SQL片段(如:AND字段名=#{参数名})3</if>
2知识支撑
但值得注意的是,必须添加WHERE1=1:若直接写WHERE后接if标签,当所有条件都为空时,会生成SELECT...WHERE的语法错误;当第一个条件成立时,还可能出现WHEREAND...的错误。1=1作为恒真条件,能避免这些问题;另外条件判断要严谨:对字符串参数需同时判断!=null和!=''''(避免空字符串引发的无效条件),对数值类型只需判断!=null。1<selectid="findUser"parameterType="User"resultType="User">2SELECTid,username,ageFROMuserWHERE1=13<iftest="username!=nullandusername!=''">4ANDusernameLIKECONCAT('%',#{username},'%')5</if>6<iftest="age!=null">7ANDage=#{age}8</if>9</select>示例如下。2知识支撑操作要点数据准备;创建实体类;创建DAO层接口并编写抽象方法;创建DAO层接口实现类并重写抽象方法;创建并修改MyBatis映射文件;测试运行查看结果。具体操作见视频
实操3.1<if><where>元素实现动态条件查询操作【任务3-1】使用<if>元素和<where>元素,查询用户征信表(user_credit)中姓“张”且信用积分低于600的用户的信息。<if>元素和<trim>元素联合使用<if>元素和<trim>元素联合使用能够灵活地处理动态SQL语句,实现诸如动态条件查询、动态更新等功能。<trim>元素不仅可以自定义SQL语句的前缀、后缀,还可以去除多余的分隔符,并通过前缀、后缀等标签属性的处理替代<where>、<set>等元素。<trim>元素有以下4个用于控制SQL语句的拼接规则的重要属性。prefix:指定在<trim>元素内的SQL片段前添加的前缀,如WHERE、SET等。suffix:指定在<trim>元素内的SQL片段后添加的后缀,如“)”“,”等。prefixOverrides:指定要去除的前缀字符串,多个字符串之间使用“|”分隔,常用于去除多余的AND、OR等关键字。suffixOverrides:指定要去除的后缀字符串,多个字符串之间使用“|”分隔,常用于去除多余的逗号等。2知识支撑【任务3-2】使用<if>元素和<trim>元素实现任务【3-1】。【注】由于<trim>元素可以直接实现<where>元素的相关功能,因此使用<trim>元素与使用<where>元素最大的不同表现在Mapper.xml文件中,因此此处仅需要对Mapper.xml文件进行更改即可。具体操作见视频
实操3.2<if><trim>元素实现动态条件查询操作<choose>、<when>、<otherwise>
通过将<choose>元素、<when>元素和<otherwise>元素组合起来(类似Java中的switch-case-default语句),实现根据不同的条件选择性地执行不同的SQL片段,进而生成更灵活的SQL语句的作用。<choose>元素:作为父标签,包含多个<when>元素和可选的一个<otherwise>元素,起到了分组的作用,定义了一个条件选择的范围。2知识支撑<when>元素:用于定义条件分支,每个<when>元素包含一个test属性。MyBatis会按顺序检查<when>元素的条件,一旦某个条件为真,就执行该元素内的SQL片段,并不再检查后续的<when>元素。<otherwise>元素:可选,当所有<when>元素的条件都不满足时,则会执行该元素内SQL片段。【任务3-3】通过传入不同类型的属性参数来获取用户征信表user_credit中的用户信息。若传入的参数为idcard,则通过身份证号进行查询;若传入的参数为garde,则通过信用等级进行查询;若没有传传入参数数,则实现对用户信息的全查询。当前用户征信表user_credit的数据记录情况如图3.1.1所示。2知识支撑图3.1.1
当前用户征信表user_credit的数据记录情况操作要点在DAO层接口中编写抽象方法;在DAO层接口实现类中重写抽象方法;创建并修改MyBatis映射文件;测试运行查看结果。具体操作见视频
实操3.3<choose><when><otherwise>实现动态条件查询操作
我们重点掌握了:一个核心概念:动态SQL是根据参数条件动态拼接SQL的技术,解决了静态SQL的拼接痛点,提升了代码灵活性与安全性;三组核心标签:<if>:基础条件判断,满足条件则拼接SQL片段,是动态SQL的“积木”;<where>:智能处理WHERE子句,自动添加关键字并移除多余AND/OR,替代WHERE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JNJ-16241199-Standard-生命科学试剂-MCE
- 2026年羽毛男孩阅读测试题及答案
- 2026年java内部类测试题及答案
- 2026年语言纲要测试题及答案
- 2026年深圳道路测试题及答案
- 2026年看洛丽塔测试题及答案
- 2026年第40章 测试题及答案
- 2026年五四制小升初数学测试题及答案
- 2026年柏林之围测试题及答案
- 架体、设备安装验收制度2篇
- 2026年河南省八年级地理生物会考试卷题库及答案
- 液压支架检修工岗位危险源辨识与安全防控培训
- 2026年天津市西青区中考历史二模试卷(含答案)
- (四模)新疆2026年高三普通高考五月适应性文科综合试卷(含答案及解析)
- 中国眩晕诊疗指南(2026版)
- 2026年福建科学技术出版社招聘工作人员4人笔试模拟试题及答案解析
- 2026公需课人工智能赋能制造业高质量发展试题及答案
- 2026年河北省邢台市八年级地理生物会考真题试卷+解析及答案
- 江苏国企社招笔试内容题库
- 【新教材】人教版(2024)八年级下册英语Unit 5 Nature's Temper单元教学设计
- (正式版)DB21∕T 4388-2026 《煤矸石次轻骨料混凝土应用技术规程》
评论
0/150
提交评论