使用Map传递参数
- 如果数据库中字段很多,实体类中的参数也很多,那么使用实体类对象来传参就不是很方便了,此时可以考虑使用Map!
- 使用map传参,直接在sql中使用map的key即可取出参数。
- 使用对象传参,直接在sql中使用对象的属性名即可取出参数。
使用Map传递参数,实现添加用户
-
在UserDao/UserMapper中添加一个抽象方法
//添加用户 map方法 int addUser2(Map<String, Object> map);
-
在UserMapper.xml中实现这个抽象方法
<!-- 新增用户 Map方法 --> <insert id="addUser2" parameterType="map"> insert into mybatis.user (`name`,`pwd`) values (#{username},#{password}) </insert>
-
测试
@Test public void addUser2(){ SqlSession sqlSession = MybatisUtils.getSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); Map<String, Object> map = new HashMap<>(); map.put("username","张三"); map.put("password","123123"); int i = mapper.addUser2(map); if(i > 0){ System.out.println("成功插入"+ i + "个用户!"); }else { System.out.println("插入失败"); } sqlSession.commit(); sqlSession.close(); }
-
测试结果
使用Map传递参数,实现查询用户 -
在UserDao/UserMapper中添加一个抽象方法
//根据id查用户 Map方法 User getUserById2(Map<String, Object> map);
-
在UserMapper.xml中实现这个抽象方法
<select id="getUserById2" parameterType="map" resultType="com.nych.entity.User"> select * from `user` where id = #{userId} and `name` = #{userName} </select>
-
测试
//测试 使用Map传参 @Test public void getUserById2(){ SqlSession sqlSession = MybatisUtils.getSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); Map<String, Object> map = new HashMap<>(); map.put("userId",6); map.put("userName","map"); User user = mapper.getUserById2(map); System.out.println("user = " + user); sqlSession.commit(); sqlSession.close(); }
-
测试结果