Mybatis中的动态查询
1:当传入的参数为 对象类型时 的动态语句
查询:
<?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 namespace="com.cn.entity.User.mybatisUserMapper2" > <!-- 动态查询 当if条件成立是就按照条件查询,不成立时就查询所有 --> <select id="find" resultType="user" parameterType="user"> select * from user <where> <if test="id !='' and username !=null"> and id = #{id} and username = #{username} </if> </where> </select> </mapper>
测试:
SqlSession sqlSession = MyBatisUtil.getSqlSession(); User u = new User(); u.setId(2); u.setAddress("湖南"); u.setBirthday(new Date()); u.setSex("女"); u.setUsername("rose"); List<User> list1 = sqlSession.selectList("com.cn.entity.User.mybatisUserMapper2.find", u);
2:当传入的参数为 Map 的动态语句
查询:
测试:
更新:
3:当传入的参数为 List/ 数组 的动态语句
删除:
<!-- 动态删除 传入的参数为list 或者 数组 --> <delete id="del" parameterType="list"> delete from user where id in <!--collection="list" 这个list 是指的list类型 不是写参数的名字 一定要注意 如果是数组的话就写成collection="arry"--> <foreach collection="list" item="ids" close=")" open="(" separator=","> ${ids} <!--${}进行取值 或者 #{} 取值--> </foreach> </delete>
测试:
List list2 = new ArrayList<>(); list2.add(1); list2.add(2); sqlSession.delete("com.cn.entity.User.mybatisUserMapper2.del", list2); sqlSession.commit(); //一定要进行事务的提交
插入:
坚持