1、if标签的使用
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into
userinfo
(username,password,age,
<if test="gender!=null">gender,</if>
phone)
values
(#{username},#{password},#{age},
<if test="gender!=null">#{gender},</if>
#{phone})
</insert>
2、如果我们像上面那样使用if会有一定问题
他可能导致多出 ,
解决办法
修改后的代码
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into
userinfo
(
<trim suffixOverrides=",">
<if test="gender!=null">gender,</if>
<if test="age!=null">age,</if>
<if test="username!=null">username,</if>
<if test="gender!=null">password,</if>
<if test="phone!=null">phone</if>
</trim>
)
values
(
<trim suffixOverrides=",">
<if test="gender!=null">#{gender},</if>
<if test="age!=null">#{age},</if>
<if test="username!=null">#{username},</if>
<if test="gender!=null">#{password},</if>
<if test="phone!=null">#{phone}</if>
</trim>
)
</insert>
也可以把括号优化掉
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into
userinfo
<trim suffixOverrides="," prefix="(" suffix=")">
<if test="gender!=null">gender,</if>
<if test="age!=null">age,</if>
<if test="username!=null">username,</if>
<if test="gender!=null">password,</if>
<if test="phone!=null">phone</if>
</trim>
values
<trim suffixOverrides="," prefix="(" suffix=")">
<if test="gender!=null">#{gender},</if>
<if test="age!=null">#{age},</if>
<if test="username!=null">#{username},</if>
<if test="gender!=null">#{password},</if>
<if test="phone!=null">#{phone}</if>
</trim>
</insert>
3、where标签
但是当我们的username为null的时候我们就多出了个and ,
解决办法(用where标签)
where标签的作用
(1)当username等于空时候帮我们去掉and
(2)当查询条件为空的时候where会自己去掉where标签,直接查找所有元素
4、set标签
此时我们如果age为空,那我们password后面的逗号就没法处理
解决办法
5、foreach标签
(1)解决的问题(当我们要删除元素时候)
(2)接口代码
(3)xml代码
(4)测试代码
6、sql标签(定义重复利用的代码)
7、注解和XML对比(不推荐使用注解,因为注解没有sql的报错提醒)
(1)XML
(2)注解