一、在Map传值中模糊查询
- 适用于字段或者参数过多,我们应当考虑使用Map!
- 在xml的sql语句当中,parametertaype的类型直接写map,不用写实体类的全类名了。
- #{} 括号内可以随意命名变量,不需要再与实体类的变量名一致。
- 在测试时,只需要 new 一个hashmap ,把括号内的变量当作key值,value为你要添加的值,然后put进map里就可以了。省去了建造多个构造器的步骤。
1、Mapper接口
List<Map> UserList(Map<String,Object> map);
2、XML
<select id="UserList" resultType="map">
select *
from mybatis01.user where name like #{value};
</select>
3、Test
@Test
public void getUserList() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map = new HashMap<>();
map.put("value", "%亚%");
List<Map> maps = mapper.UserList(map);
for (Map map1 : maps) {
System.out.println(map1);
}
sqlSession.close();
}
二、在对象传值中模糊查询
- 在接口绑定的xml中,#{} 括号里面的变量,必须与实体类定义的变量名相对应。
- 在测试类当中,要new对象时,构造器的参数也必须与实体类创建的构造器一一对应。
1、实体类
package com.jin.pojo;
public class User {
private int id;
private String name;
private String pwd;
...
...
}
2、Mapper接口
List<User> UserList02(String name);
3、XML
<select id="UserList02" resultType="com.jin.pojo.User" parameterType="String">
select *
from mybatis01.user where name like #{name};
</select>
4、Test
@Test
public void UserList02(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.UserList02("%亚%");
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
查询结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/ec6ff962a55b4d6bbbcd5b71b27d515b.png)