万能的Map集合传递参数和模糊查询

注意:结合之前文章mybatis基础,在此基础上进行。

1 万能的Map

假设我们的实体类,或者数据库中的表、字段或者参数过多,我们可以考虑使用Map

1 不同名字的插入操作

// 不同名字的插入操作
    int addUser1(Map<String,Object> map);
    <!--不同名字的插入操作-->
    <insert id="addUser1" parameterType="map">
        insert into user(id,name,pwd,age) values (#{id},#{name},#{pwd},#{age});
    </insert>
 //6.万能的map 不同名字的插入
    @Test
    public void addUser1(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("id",8);
        map.put("name","老王");
        map.put("pwd","四川");
        map.put("age",20);
        int i = mapper.addUser1(map);
        if (i > 0){
            sqlSession.commit();
            sqlSession.close();
            System.out.println("添加成功");
        }else {
            sqlSession.rollback();
            sqlSession.close();
            System.out.println("添加失败");
        }
    }

2 实现多个字段的联合查找

    // 可以实现多个字段的联合查找
    public User findbyId2(Map<String,Object> map);
    <!--多个字段的联合查找-->
    <select id="findbyId2" parameterType="map" resultType="yj.com.pojo.User">
        select * from xsgl.user where id=#{id} and name=#{name};
    </select>
 //7.多个字段的联合查找
    @Test
    public void findbyId2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String,Object> map = new HashMap<String, Object>();
        map.put("id",1);
        map.put("name","萧炎");
        try{
            User user = mapper.findbyId2(map);
            System.out.println(user.toString());
        }catch (Exception e){
            System.out.println("没有这个对象");
        }
    }

3 删除

    //删除
    public  int deleteUser2(Map<String,Object> map);
    <!-- 删除   -->
    <delete id="deleteUser2" parameterType="map">
        delete from xsgl.user where id=#{id} or name=#{name}
    </delete>
    @Test
    public void deleteUser2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String,Object> map = new HashMap<String, Object>();
        map.put("id",6);
        map.put("name","老王");
        int i = mapper.deleteUser2(map);
        if (i > 0){
            sqlSession.commit();
            sqlSession.close();
            System.out.println("删除成功");
        }else{
            sqlSession.rollback();
            sqlSession.close();
            System.out.println("删除失败");
        }
    }

4 修改

    //修改
    public int updateUser2(Map<String,Object> map);
    <!--  修改  -->
    <update id="updateUser2" parameterType="map">
        update user set name =#{name},pwd=#{pwd},age=#{age} where id=#{id};
    </update>
 //9.修改
    @Test
    public void updateUser2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String,Object> map = new HashMap<String, Object>();
        map.put("id",3);
        map.put("name","老王");
        map.put("pwd","四川");
        map.put("age",20);
        int i = mapper.updateUser2(map);
        if (i > 0){
            sqlSession.commit();
            sqlSession.close();
            System.out.println("修改成功");
        }else{
            sqlSession.rollback();
            sqlSession.close();
            System.out.println("修改失败");
        }
    }

2 模糊查询

1 方法一

    //模糊查询 方法一
     public List<User> getUserLike(String name);
    <!--  模糊查询 方法一  -->
    <select id="getUserLike" parameterType="String" resultType="yj.com.pojo.User">
        select * from user where name like #{name}
    </select>
    //10.模糊查询 方法一
    @Test
    public void getUserLike() throws IOException {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.getUserLike("叶");
        for (User user : users) {
            System.out.println(user.toString());
        }
    }

2 方法二

    //模糊查询 方法二
      public List<User> getUserLike1(String name);
    <!--  模糊查询 方法二  -->
    <select id="getUserLike1" parameterType="String" resultType="yj.com.pojo.User">
        select * from user where name like "%"#{name}"%"
    </select>
 //11.模糊查询 方法二
    @Test
    public void getUserLike1() throws IOException {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.getUserLike1("叶");
        for (User user : users) {
            System.out.println(user.toString());
        }
    }

猜你喜欢

转载自blog.csdn.net/m0_52896041/article/details/128065649