Mybatis映射文件中的标签的使用
<foreach>
<!-- foreach --> <delete id="delMulti" parameterType="java.util.List"> delete from user where id in <!--collection:输入参数为List集合时,必须写list, item:为集合里的每一项起名,可以任意定义 separator:每一项中间的分割符 open:在执行循环体之前拼接的内容; close:在执行循环体之后拼接的内容;--> <foreach collection="list" item="uid" separator="," open="(" close=")"> #{uid} </foreach> </delete>
where
<!--where:解析成where关键字,会自动去掉第一个符合条件的限定条件中的and --> <select id="getByNameSex" parameterType="map" resultType="user"> select * from user <where> <if test="uname!=null and uname!=''"> and username like "%"#{uname}"%" </if> <if test="usex!=null and usex!=''"> and sex=#{usex} </if> </where>
choose when otherwise
<!--choose when otherwise:某个判断满足条件后,其他条件就不会再执行 --> <select id="getByNameSex1" parameterType="map" resultType="user"> select * from user where <choose> <when test="uname!=null and uname!=''"> username like "%"#{uname}"%" </when> <when test="usex!=null and usex!=''"> sex=#{usex} </when> <otherwise> 1=1 </otherwise> </choose> </select>
set
<!-- set:解析为set关键字,可以自动去掉最后一个更新的字段后面的逗号 --> <update id="updUser" parameterType="user"> update user <set> <if test="username!=null and username!=''"> username=#{username}, </if> <if test="sex!=null and sex!=''"> sex=#{sex} </if> </set> where id=#{id} </update>
trim:使用次数较少
<update id="updUser1" parameterType="user"> <!--prefix:前缀,在trim中内容执行之前拼接 suffix:后缀:在trim中内容执行之后拼接 suffixOverrides:忽略后缀 prefixOverrides:忽略前缀--> <trim prefix="update user set" suffix="where id=#{id}" suffixOverrides=","> <if test="username!=null and username!=''"> username=#{username}, </if> <if test="sex!=null and sex!=''"> sex=#{sex} </if> </trim> </update>
bind使用较少
<select id="getByUname" parameterType="string" resultType="User"> <!--name:新的字符串的变量名 --> <bind name="uname" value="'%'+_parameter+'%'"/> select * from user where username like #{uname} </select>