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(); //一定要进行事务的提交

 

 

 

 

 

 

 

 

 

 

插入:

 

posted @ 2020-06-04 15:54  gaoshengjun  阅读(496)  评论(0编辑  收藏  举报