万能Map.
假设,我们的实体类 或者 数据库中的表,字段或者参数过多,可以考虑使用Map
- 很像构造器 (带参,但是参数数量,类型,可以变化)
- 给字段起别名
- 其实可以在实体类中 生成所有带参的构造器,但是事先写好,使用Map按需求写就行
数据表
1、编写流程.
编写Mapper接口中响应的抽象方法
//map的使用 通过map修改用户密码 int modifyUserPwd(Map<String, Object> map);
编写相应的SQL语句
update mybatis.user set pwd=#{password} where id=#{UserId};
编写具体测试代码(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 ,索引,或者 注解