前言
接下来我们会使用的数据表如下:
对应的实体类为:UserInfo
所有的准备工作都在如下文章。
1.<if>标签和<trim>标签
是存在⾮必填字段问题的解决方法。
简单来说,<if>标签就是一个判断语句,test 里是要进行的判断,如果为true,则会填充标签里的内容。
1.prefix:表⽰整个语句块,以prefix的值作为前缀2.suffix:表⽰整个语句块,以suffix的值作为后缀3.prefixOverrides:表⽰整个语句块要去除掉的前缀4. suffixOverrides:表⽰整个语句块要去除掉的后缀
比如我们选择对UserInfo的多个字段采取动态⽣成的⽅式。(username,password,age,gender)
UserInfoXmlMapper
Integer insert3(UserInfo userInfo);
UserInfoXmlMapper.xml
<insert id="insert3">
insert into userinfo
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="username!=null">
username,
</if>
<if test="password!=null">
password,
</if>
<if test="age!=null">
age,
</if>
<if test="gender">
gender
</if>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="username!=null">
#{username},
</if>
<if test="password!=null">
#{password},
</if>
<if test="age!=null">
#{age},
</if>
<if test="gender">
#{gender}
</if>
</trim>
</insert>
2.<where>标签
如果我们想根据id,password来对表进行删除操作。
仅使用<if>标签和<trim>标签
UserInfoXmlMapper.xml
<delete id="delete2">
delete from userinfo
<trim prefix="where" prefixOverrides="and">
<if test="id!=null">
id = #{id}
</if>
<if test="password!=null">
and password = #{password}
</if>
</trim>
</delete>
面对条件判断使用<where>标签可以化简。
使用<where>标签对上述代码化简
<delete id="delete3">
delete from userinfo
<where>
<if test="id!=null">
id = #{id}
</if>
<if test="password!=null">
and password = #{password}
</if>
</where>
</delete>
对<where>标签的说明:
1.<where> 只会在⼦元素有内容的情况下才插⼊where⼦句
2.会⾃动去除⼦句的开头的AND或 OR
3.<set>标签
需求: 根据传⼊的⽤⼾对象属性来更新⽤⼾数据,可以使⽤标签来指定动态内容
与<where>标签的使用类似
接⼝定义: 根据传⼊的⽤⼾ id 属性,修改其他不为 null 的属性
UserInfoXmlMapper.xml
<update id="update2">
update userinfo
<set>
<if test="username!=null">
username=#{username}
</if>
</set>
where id=#{id}
</update>
<set>标签标签的说明:
<set> :动态的在SQL语句中插⼊set关键字,并会删掉额外的逗号
4.<foreach>标签
1.collection:绑定⽅法参数中的集合,如 List,Set,Map或数组对象2.item:遍历时的每⼀个对象3.open:语句块开头的字符串4.close:语句块结束的字符串5.separator:每次遍历之间间隔的字符串
需求: 根据多个id, 删除⽤户数据
UserInfoXmlMapper
Integer delete4(List<Integer> ids);
UserInfoXmlMapper.xml
<delete id="delete4">
delete from userinfo
where id in
<foreach collection="ids" open="(" close=")" separator="," item="id" >
#{id}
</foreach>
</delete>
5.<include>标签
1.<sql> :定义可重⽤的SQL⽚段
2.<include> :通过属性refid,指定包含的SQL⽚段
UserInfoXmlMapper.xml
<sql id="el">
id, username, age, gender
</sql>
<select id="selectAllUser3" resultType="com.wh.myBatis.model.UserInfo">
select
<include refid="el"></include>
from userinfo
</select>
以上为我个人的小分享,如有问题,欢迎讨论!!!
都看到这了,不如关注一下,给个免费的赞