- Map传递参数,直接在sql中取出key即可
- 对象传递参数,直接在sql中取对象的属性即可
- 一个基本类型传递参数,直接在sql中取到
1.假设实体类或者数据库中的表的字段过多,应当考虑使用Map
1.编写接口:
//万能的Map
int addUser2(Map<String,Object> map);
2.编写接口的实现类:
<!--增加用户,传递Map中的key-->
<insert id="addUser2" parameterType="map">
insert into mybatis.user(id,name,pwd) values(#{userid},#{username},#{password});
</insert>
3.编写测试类:
@Test
public void addUser2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
//根据键存值
map.put("userid",4);
map.put("username","郑爽");
map.put("password","123");
int count = mapper.addUser2(map);
if(count>0){
System.out.println("添加成功");
}
sqlSession.close();
}
2.使用Map,可以不用把表的属性全写出来,只要写需要的属性
1.编写接口:
//万能的Map
User getUserById2(Map<String,Object> map);
2.编写接口的实现类:
<!--使用Map,可以不用把表中的属性全部写出来只需要需要的属性-->
<select id="getUserById2" parameterType="map" resultType="com.kuang.pojo.User">
select * from mybatis.user where id=#{userid}
</select>
3.编写测试类:
@Test
public void getUserById2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userid",3);
User user = mapper.getUserById2(map);
System.out.println(user);
sqlSession.close();
}
3.模糊查询
1.编写接口:
//模糊查询用户
List<User> getUserLike(String value);
2.编写接口实现类
<select id="getUserLike" resultType="com.kuang.pojo.User">
select * from mybatis.user where name like #{value}
</select>
3.编写测试类:
@Test
public void getUserLike(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserLike("%李%");
for(User user:userList){
System.out.println(user);
}
sqlSession.close();
}