动态SQL
2021/9/14 19:06:45
本文主要是介绍动态SQL,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
什么是动态SQL:
动态SQL就是指根据不同的条件生成不同的SQL语句
利用动态 SQL,可以彻底摆脱这种痛苦。
动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。
- if
- choose (when, otherwise)
- trim (where, set)
- foreach
动态SQL:
数据库:
public class Blog { private int id; private String title; private String author; private Date createTime; // 属性名和数据库不一致 设置 <setting name="mapUnderscoreToCamelCase" value="true"/> private int views; }
编写Mapper接口与MapperXML:
if
<select id="getBlogIf" parameterType="map" resultType="Blog"> select * from blog where 1=1 <if test="title != null"> and title = #{title} </if> <if test="author != null"> and author = #{author} </if> </select>
这条语句提供了可选的查找文本功能。如果不传入 “title”,那么所有数据都会返回
choose(when、otherwise)
<select id="getBlogChoose" parameterType="map" resultType="Blog"> select * from blog <where> <choose> <when test="title != null"> title = #{title} </when> <when test="author != null"> and author = #{author} </when> <otherwise> and views = #{views} </otherwise> </choose> </where> </select>
传入了 “title” 就按 “title” 查找,传入了 “author” 就按 “author” 查找的情形。若两者都没有传入,就返回标记为 featured 的 BLOG
trim(where、set)
where
<select id="getBlogChoose" parameterType="map" resultType="Blog"> select * from blog <where> <if test="title != null"> and title = #{title} </if> <if test="author != null"> and author = #{author} </if> </where> </select>
where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。
set
<update id="updateBlog" parameterType="map"> update blog <set> <if test="id != null">id=#{id},</if> <if test="title != null">title=#{title},</if> <if test="author != null">author=#{author},</if> <if test="views != null">views=#{views},</if> </set> where id=#{id} </update>
set 元素会动态地在行首插入 SET 关键字,并会删掉额外的逗号。
foreach
script
bind
这篇关于动态SQL的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门