一、Map
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map!
沿用上一篇博客“Mybatis实现CRUD”项目:
1、通过Map的方式,实现增加一个用户
UserDao接口核心代码:
int addUser2(Map<String , Object> map);
UserDao.xml核心代码:
<insert id="addUser2" parameterType="map">
insert into mybatis.user(id , name , pwd)values (#{userId} , #{userName} , #{password})
</insert>
UserDaoTest核心代码:
@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" , 5);
map.put("userName" , "杰克");
map.put("password" , "234561");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
2、通过Map的方式,实现根据Id查询用户
UserDao接口核心代码:
User getUserById2(Map<String , Object> map);
UserDao.xml核心代码:
<select id="getUserById2" parameterType="map" resultType="com.massimo.pojo.User">
select * from mybatis.user where id = #{helloid};
</select>
UserDaoTest核心代码:
@Test
public void getUserById2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("helloid" , 1);
User user = mapper.getUserById2(map);
System.out.println(user);
sqlSession.close();
}
二、模糊查询
Java代码执行的时候,传递通配符% %
UserDao接口核心代码:
List<User> getUserLike(String value);
UserDao.xml核心代码:
<select id="getUserLike" resultType="com.massimo.pojo.User">
select * from mybatis.user where name like #{value}
</select>
UserDaoTest核心代码:
@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();
}
在sq|拼接中使用通配符
UserDao.xml核心代码:
<select id="getUserLike" resultType="com.massimo.pojo.User">
select * from mybatis.user where name like "%"#{value}"%";
</select>
UserDaoTest核心代码:
@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();
}
三、小结
Map传递参数,直接在sq|中取出key即可! parameterType=“map”
对象传递参数,直接在sq|中取对象的属性即可! parameterType=“Object”
只有一个基本类型参数的情况下,可以直接在sq|中取到!
多个参数用Map,或者注解!