if标签
格式:
<if test=",语法 属性=xxx值">
符合判断的内容
</if>
List<User> selectUser(User user);
<select id="selectUser" resultType="com.example.springdynamicsql.entity.User">
select id ,name ,pwd from user where
<if test="name!=null and name!='' ">
name=#{
name}
</if>
<if test="id>0" >
and id>#{
id}
</if>
</select>
where标签
用来包含多个的,当多个if有一个成立的,会自动增加一个where关键字,并去掉if中多余的and、or等
List<User> selectUserwhere(User user);
<select id="selectUserwhere" resultType="com.example.springdynamicsql.entity.User">
select id ,name,pwd from User
<where>
<if test="name !=null and name !='' ">
name=#{
name}
</if>
<if test="id>0">
or id>#{
id}
</if>
</where>
</select>
foreach标签
标签用于实现对于数组与集合的遍历,对其他使用,需要注意
- collection表示要遍历的集合类型List,array等;主要用于sql的in语句中。 学生id是1,2,3,的三个学生
select * from user where id in (1,2,3);
public List(User) selectFor(List<Integer> idList);
List<Integer> list=new...;
list.add(1);
list.add(2);
list.add(3);
- open、close、separator为对遍历内容的SQL拼接
foreach方法一
List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
userMapper.selectUserFor(list);
//foreach使用一
List<User> selectUserFor(List<Integer> list);
<!--foreach使用一
collection:表示接口中方法参数的类型
如果是数组就使用array
如果是list集合使用list
item是自定义表示数组和集合成员的变量
close是循环结束时的字符
separator是集合成员之间的分隔符
-->
<select id="selectUserFor" resultType="com.example.springdynamicsql.entity.User">
select * from user where id in
<foreach collection="list" item="myid" open="(" close=")" separator=",">
#{
myid}
</foreach>
</select>
foreach方法二
//foreach使用二
List<User> selectUserFor02(List<User> userList);
<select id="selectUserFor02" resultType="com.example.springdynamicsql.entity.User">
select * from user where id in
<foreach collection="list" item="user" open="(" close=")" separator=",">
#{
user.id}
</foreach>
</select>
//测试代码
List<User> list=new ArrayList<User>();
User user=new User();
user.setId(1);
list.add(user);
user=new User();
user.setId(2);
list.add(user);
userMapper.selectUserFor02(list);
代码片段
标签用于定义SQL片段,以便其它SQL标签的复用,而其他标签使用该SQL片段,需要使用子标签,该标签可以定义SQL语句中的任何部分,所以子标签可以放在动态SQL的任何位置。
//sql标签中的代码可以通过include子标签调用
<sql id="UserId">
select * from user
</sql>
<select id="selectUserif" resultType="com.example.springdynamicsql.entity.User">
<include refid="UserId"></include> //调用sql代码片段
where
<if test="name!=null and name!='' ">
name=#{
name}
</if>
<if test="id>0" >
and id>#{
id}
</if>
</select>