MyBatis 动态SQL
2017-09-30 09:58
176 查看
if元素:
choose、when、otherwise元素:
trim、where、set元素
当where元素里面的条件成立时,才会加入where这个SQL关键字组装的SQL里面,否则就不加入。
有时候需要去掉一些特殊的SQL语法,比如and、or。而是哟哦那个trim元素也可以达到预期效果:
trim元素意味着要去掉一些特殊的字符串,prefix表示语句的前缀,prefixOverrides代表需要去掉哪种字符串。
foreach 元素
循环语句,作用就是遍历集合,它能够很好地支持数组和List、Set接口的集合。
collection:传递进来的集合
item:x当前循环中的元素
index:当前元素在集合的位置下标
open和close配置的是以什么符号将这些集合元素包装起来。
separator:是各个元素的间隔符。
<if test="name != null and name != ''" > ... </if>
choose、when、otherwise元素:
<select id="findAnalystByIds" resultType="com.bob.analyst.model.Analyst" parameterType="com.bob.analyst.model.Analyst"> select <include refid="Base_Column_List" /> from tbl_analyst where 1=1 <choose> <when test="name != null and name != ''"> and name=#{name} </when> <when test="userCommentSum != null"> and user_comment_sum = #{userCommentSum} </when> <otherwise> and intro is not null </otherwise> </choose> </select>
trim、where、set元素
<select id="findAnalystByIds" resultType="com.bob.analyst.model.Analyst" parameterType="com.bob.analyst.model.Analyst"> select <include refid="Base_Column_List" /> from tbl_analyst <where> <if test="name != null and name != ''" > and name like concat('%',#{name},'%') </if> <if test="id != null"> and id = #{id,jdbcType=BIGINT} </if> </where> </select>
当where元素里面的条件成立时,才会加入where这个SQL关键字组装的SQL里面,否则就不加入。
有时候需要去掉一些特殊的SQL语法,比如and、or。而是哟哦那个trim元素也可以达到预期效果:
<select id="findAnalystByIds" resultType="com.bob.analyst.model.Analyst" parameterType="com.bob.analyst.model.Analyst"> select <include refid="Base_Column_List" /> from tbl_analyst <trim prefix="where" prefixOverrides="and"> <if test="name != null and name != ''" > and name like concat('%',#{name},'%') </if> </trim> </select>
trim元素意味着要去掉一些特殊的字符串,prefix表示语句的前缀,prefixOverrides代表需要去掉哪种字符串。
foreach 元素
循环语句,作用就是遍历集合,它能够很好地支持数组和List、Set接口的集合。
<select id="findAnalystByIds" resultType="com.bob.analyst.model.Analyst" parameterType="java.lang.Long"> select <include refid="Base_Column_List" /> from tbl_analyst where 1=1 and is_delete = 0 and id in <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </select>
collection:传递进来的集合
item:x当前循环中的元素
index:当前元素在集合的位置下标
open和close配置的是以什么符号将这些集合元素包装起来。
separator:是各个元素的间隔符。
相关文章推荐
- (MyBatis)动态SQL--foreach
- MyBatis的动态sql的like拼接
- mybatis的动态SQL(二)choose标签的使用
- 后台(41)——MyBatis的动态SQL
- mybatis动态SQL语句
- mybatis入门基础(五)----动态SQL
- MyBatis学习 之 三、动态SQL语句
- Mybatis的动态Sql
- 【mybatis】动态sql
- mybatis入门基础(五)----动态SQL
- MyBatis的动态SQL详解(2)
- MyBatis动态SQL语法
- mybatis的动态sql和关联查询
- mybatis(四)动态拼sql以及不反序列化问题
- MyBatis的动态SQL详解
- MyBatis SQL语句动态传入参数作表名。
- 在mybatis的sqlMapper中使用Ognl判断动态sql语句
- mybatis动态sql查询语法
- mybatis动态sql查询
- mybatis动态SQL - like