if+where: 用于查询操作,where标签可以智能判断是否添加and、or、where关键词 示例: <select id="findByParam" resultType="com.accp.pojo.User"> select * from user <where> <if test="gender!=null"> gender=#{gender} </if> <if test="userName!=null"> and userName like CONCAT('%',#{userName},'%') </if> </where> </select>
if+set: 用于更新操作,set标签可以智能判断每个if条件后是否添加"," 示例: <update id="updateUser" parameterType="com.accp.pojo.User"> update user <set> <if test="userName != null"> userName = #{userName}, </if> <if test="phone != null"> phone = #{phone}, </if> <if test="address != null"> address = #{address}, </if> <if test="gender != null"> gender = #{gender} </if> </set> where id = #{id} </update>
trim: prefix:前缀 suffix:后缀 prefixOverrides:自动判断子语句if前面的条件语句是否添加或不添加其值 suffixOverrides:自动判断子语句if后边的条件语句是否添加或不添加其值 示例: <update id="updateUser" parameterType="com.accp.pojo.User"> update user <trim prefix="set " suffixOverrides="," suffix=" where id = #{id}" > <if test="userName != null"> userName = #{userName}, </if> <if test="phone != null"> phone = #{phone}, </if> <if test="address != null"> address = #{address}, </if> <if test="gender != null"> gender = #{gender} </if> </trim> </update>
foreach: 更新操作,或者用在insql语句中 collection:传进来的参数类型 List集合写成:”list”; 数组写成:”array”; 其他复杂类型写成:参数使用map 这里写map的key item:临时变量(每一个迭代元素的别名) open:该语句以什么开始 close:该语句以什么结束 separator:多个迭代元素以什么分隔(符) 示例: <select id="findByIds" resultType="com.accp.pojo.User"> select * from user where id in <foreach collection="list" item="usreIds" open="(" separator="," close=")"> #{usreIds} </foreach> </select>
<select id="getUserListById_array" resultType="com.accp.pojo.User"> select * from user where id in <foreach collection="array" item="ids" open="(" separator="," close=")"> #{ids} </foreach> </select>
choose:一般使用在多个条件时只想查询其中一个 when otherwise
示例: <select id="findByParams" resultType="com.accp.pojo.User"> select * from user where 1=1 <choose> <when test="userName!=null"> and userName like CONCAT('%',#{userName},'%') </when> <when test="phone!=null"> and phone = #{userName} </when> <otherwise> and address like CONCAT('%',#{address},'%') </otherwise> </choose> </select>
转载于:https://www.cnblogs.com/zhuhuibiao/p/9402408.html
相关资源:SQL动态查询语句大全