mybatis---动态SQL
if标签
<!-- 根据输入的参数进行查询 --> <select id="findUserByCondition" resultMap="userMap" parameterType="user"> select * from user where 1=1 <if test="userName != null"> and username = #{userName} </if> <if test="userSex != null"> and sex =#{userSex} </if> </select>
where标签(有了之后,就不需要 where 1 = 1 了)
<select id="findUserByCondition" resultMap="userMap" parameterType="user"> select * from user <where> <if test="userName != null"> and username = #{userName} </if> <if test="userSex != null"> and sex =#{userSex} </if> </where> </select>
foreach标签的使用
实体类
public class QueryVo { private List<Integer> ids; private User user;
接口
/** * 根据queryvo中存在的的集合信息,查询用户 * @return */ List<User> findUserInIds(QueryVo vo);
映射配置文件
<!--根据queryvo中的集合查询用户--> <select id="findUserInIds" resultMap="userMap" parameterType="queryvo"> select * from user <where> <if test="ids != null and ids.size()>0"> <!--collention:查询的集合 open:开始 close:结束 item:别名,必须和下面的id一致 separator:以什么符号分割 --> <foreach collection="ids" open="and id in (" close=")" item="id" separator=","> #{id} </foreach> </if> </where> </select>
测试类
/** * 测试foreach标签的使用 */ @Test public void testFindByIds(){ QueryVo vo = new QueryVo(); List<Integer> list = new ArrayList<Integer>(); list.add(41); list.add(46); list.add(45); list.add(48); vo.setIds(list); List<User> users = userDao.findUserInIds(vo); for(User user : users){ System.out.println(user); } }

浙公网安备 33010602011771号