假设,我们实体类,或者数据库中的表,字段,或者参数过多,我们应当考虑使用Map!
//万能的map
int addUser2(Map<String, Object> map);
<insert id="addUser2" parameterType="map">
insert into mybatis.user (id,username,address) values (#{userid},#{username},#{address});
</insert>
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("userid",12);
map.put("username","猪八戒");
map.put("address","nuaa");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可!
对象传递参数,直接在sql中取对象的属性即可!
只有一个基本数据类型的情况下,可直接在sql中取到!
多个参数用Map,或者注解!
模糊查询怎么写?
1、Java代码执行时,传递通配符% %
List<User> userList = mapper.getUserLike("%王%");
2、在sql拼接中使用通配符。
select * from mybatis.user where name like "%"#{value}"%"
List<User> getUserLike(String name);
<select id="getUserLike" resultType="com.wly.domain.User">
select * from user where username like #{value}
</select>
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.getUserLike("%王%");
for(User user:userList){
System.out.println(user);
}
sqlSession.close();
}