MyBatis学习笔记-03-万能Map


万能Map.

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

  • 很像构造器 (带参,但是参数数量,类型,可以变化)
  • 给字段起别名
  • 其实可以在实体类中 生成所有带参的构造器,但是事先写好,使用Map按需求写就行

数据表

1、编写流程.

  1. 编写Mapper接口中响应的抽象方法

    //map的使用 通过map修改用户密码
    int modifyUserPwd(Map<String, Object> map);
  2. 编写相应的SQL语句

    
        update mybatis.user set pwd=#{password} where id=#{UserId};
        
    
  1. 编写具体测试代码(or 业务代码)

    @Test
    public void modifyUserPwd() {
        try (SqlSession sqlSession = MybatisUtils.getSqlSession();) {
            UserMapper userDao = sqlSession.getMapper(UserMapper.class);
    
            Map<String, Object> map = new HashMap<>();
            map.put("UserId", 4);
            map.put("password", "密码");
    
            int num = userDao.modifyUserPwd(map);
            sqlSession.commit();
        }
    }
    

结果显示

2、区别.

  • Map传递参数,直接在Sql(Mapper.xml)中取出属性对应的Key即可 parameterType="map"
  • 对象传递参数,直接在Sql中取出对象的字段名即可parameterType="Object"
  • 只有一个基本类型参数的情况下,可以直接在Sql中获取parameterType="int"
  • 多个参数用Map ,索引,或者 注解

文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
MyBatis学习笔记-04-模糊查询 MyBatis学习笔记-04-模糊查询
模糊查询的几种方式. java代码执行的时候,传递通配符%% @Test public void getUserByLike(){ try(SqlSession sqlSession = MybatisUtils.getSqlSe
2020-07-23
下一篇 
MyBatis学习笔记-02-CRUD MyBatis学习笔记-02-CRUD
CRUD.目录结构 1、namespace. UserMapper.xml的namespace中的包名与Dao/mapper接口的包名一致 <mapper namespace="dao.UserMapper"> 2、select.
2020-07-22
  目录