mybatis(万能map)
我们使用对象作为参数有一个缺点:
- 我们要在mapper.xml文件和测试中要把所有的字段都写出来,那么,假如一个对象有100个字段,那我们要把这些字段都写出来吗?
所以这时我们就要用到map作为参数
实例:
对象 VS map
接口
int addUser(User user); int addUser2(Map<String,Object> map);
mapper.xml
<insert id="addUser" parameterType="com.kuang.pojo.User"> insert into mybatis.user (id,name,pwd) values (#{id},#{name },#{pwd}); </insert> <insert id="addUser2" parameterType="map"> insert into mybatis.user(id,name,pwd)values (#{helloid},#{helloname},#{hellopwd}); </insert>
测试
@Test public void addUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.addUser(new User(4,"赵六","4664785")); sqlSession.commit(); sqlSession.close(); } @Test public void addUser2(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); HashMap<String, Object> map = new HashMap<>(); map.put("helloid",8); map.put("helloname","田七"); map.put("hellopwd","5465555"); userMapper.addUser2(map); sqlSession.close(); }
如果对象中字段非常多的话,我们写起来就很麻烦,所以一定要使用map
总结:
- 参数为一个时,我们使用基本类型作为参数
- 参数为多个时,我们使用map作为参数
我今天运行这个测试,怎么都成功不了,一直报错,代码还是没有一点问题,经过一番折腾,发现是因为我在的xml文件的注释中含有中文,万万没有想到这里都会出错
解决方法:将UTF-8改为UTF8
相关文章推荐
- Mybatis 万能的map来接收值
- mybatis 的 resultMap使用方式
- mybatis 关联查询 resultMap 同名冲突
- MyBatis运行时报:Parameter Maps collection dose not contain value for java.util.Map
- MyBatis中resultMap和parameterMap的使用
- 好947 Mybatis 配置resultMap 带参数查询Map 注意selectOne数据库返回结果一条数据库 否则会报错
- Mybatis中的resultType和resultMap
- mybatis map foreach遍历
- mybatis中报错:resultType还是resultMap
- MyBatis中的resultType和resultMap
- mybatis学习六 多参数查询(二)Map封装多参数
- mybatis中入参为map
- mybatis select 结果集是 map 写法
- 异常org.apache.ibatibinding.BindingException: Invalid bound statement (not found): com.sxt.mybatis.map
- mybatis 之 parameterType="Map"
- Mybatis---查询使用resultType和resultMap的区别
- mybatis循环map
- Mybatis的ResultMap的使用
- Mybatis中resultMap和 特殊字符转意 的浅析
- Mybatis的ResultMap的使用