使用sql标签将重复的sql语句部分封装起来
在需要使用这个sql片段的地方,就用include标签引入就行了
<sql id="select_all"> select * from t_user </sql>
<select id="findUserListByAddress" parameterType="string" resultType="User"> <include refid="select_all"/> <!-- 加入一个判断,判断传入的address是否为空,使用if标签进行判断,该标签中的test属性就编写判断条件 --> <if test="address != null"> where address=#{address} </if> </select>
<select id="findUserListByAddressAndSex" parameterType="User" resultType="User"> <!-- include标签引入sql标签中的sql语句 refid填写的是sql标签的id --> <include refid="select_all"/> <!-- where标签的作用: 1. 可以在条件之前添加where关键字 2. 可以去掉第一个条件前的and --> <where> <if test="address != null"> and address=#{address} </if> <if test="sex != null"> and sex=#{sex} </if> </where> </select>
<delete id="deleteByIds" parameterType="int" > delete from t_user <!-- 将传入的集合中的数据遍历出来,放到()里面 使用foreach标签遍历 collection属性:要遍历的集合,如果要遍历的是一个List则写成list item属性: 遍历出来的每一个元素 separator属性: 遍历出来的每一个元素之间的分隔符 index属性: 遍历出来的每一个元素的索引 open属性: 在遍历出来的第一个元素之前拼接字符串 close属性: 在遍历出来的最后一个元素之后拼接字符串 --> <foreach collection="list" item="id" separator="," open="where uid in(" close=")"> #{id} </foreach> </delete>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 根标签mapper,一个映射配置文件,就对应一个dao接口 根标签的namespace属性的值就对应dao接口的全限定名 --> <mapper namespace="com.itheima.dao.UserDao"> <!-- 使用sql标签将重复的sql语句部分封装起来 在需要使用这个sql片段的地方,就用include标签引入就行了 --> <sql id="select_all"> select * from t_user </sql> <select id="findUserListByAddress" parameterType="string" resultType="User"> <include refid="select_all"/> <!-- 加入一个判断,判断传入的address是否为空,使用if标签进行判断,该标签中的test属性就编写判断条件 --> <if test="address != null"> where address=#{address} </if> </select> <select id="findUserListByAddressAndSex" parameterType="User" resultType="User"> <!-- include标签引入sql标签中的sql语句 refid填写的是sql标签的id --> <include refid="select_all"/> <!-- where标签的作用: 1. 可以在条件之前添加where关键字 2. 可以去掉第一个条件前的and --> <where> <if test="address != null"> and address=#{address} </if> <if test="sex != null"> and sex=#{sex} </if> </where> </select> <delete id="deleteByIds" parameterType="int" > delete from t_user <!-- 将传入的集合中的数据遍历出来,放到()里面 使用foreach标签遍历 collection属性:要遍历的集合,如果要遍历的是一个List则写成list item属性: 遍历出来的每一个元素 separator属性: 遍历出来的每一个元素之间的分隔符 index属性: 遍历出来的每一个元素的索引 open属性: 在遍历出来的第一个元素之前拼接字符串 close属性: 在遍历出来的最后一个元素之后拼接字符串 --> <foreach collection="list" item="id" separator="," open="where uid in(" close=")"> #{id} </foreach> </delete> </mapper>