模糊查找
使用关键字like
- 接口中的方法
/**
* 根据名称模糊查询
* @param username
* @return
*/
List<User> findByName(String username);
- xml文件
<!-- 根据名称模糊查询 -->
<select id="findByName" resultType="com.itheima.domain.User" parameterType="String">
select * from user where username like #{username}
</select>
- 使用模糊查询测试
@Test
public void testFindByName(){
//5.执行查询一个方法
List<User> users = userDao.findByName("%王%");
for(User user : users){
System.out.println(user);
}
}
查询编写的QueryVo对象
该写法是将前面的模糊查询的条件,封装到了QueryVo对象当中
- 接口函数
public interface IUserDao {
/**
* 根据 QueryVo 中的条件查询用户
* @param vo
* @return
*/
List<User> findByVo(QueryVo vo);
}
- QueryVo类
/**
*
* <p>Title: QueryVo</p>
* <p>Description: 查询条件对象</p>
* <p>Company: http://www.itheima.com/ </p>
*/
public class QueryVo implements Serializable {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
- XML文件
parameterType是传输#{ }对象的类型属于那一类
resultType是封装数据的类型
<!-- 根据用户名称模糊查询,参数变成一个 QueryVo 对象了 -->
<select id="findByVo" resultType="com.itheima.domain.User"
parameterType="com.itheima.domain.QueryVo">
select * from user where username like #{user.username};
</select
- 测试
@Test
public void testFindByQueryVo() {
QueryVo vo = new QueryVo();
User user = new User();
//username是查询的条件
user.setUserName("%王%");
vo.setUser(user);
List<User> users = userDao.findByVo(vo);
for(User u : users) {
System.out.println(u);
}
}
标签使用
多条件查询,与前面的QueryVo有点类似
if标签
查询的条件有可能是用户名,有可能是性别,也有可能是地址
- 接口
List<User> findByUser(User user);
- xml文件
test标签,是if里面的条件
<select id="findByUser" resultType="user" parameterType="user">
select * from user where 1=1
<if test="username!=null and username != '' ">
and username like #{username}
</if>
<if test="address != null">
and address like #{address}
</if>
</select
- 测试
@Test
public void testFindByUser() {
User u = new User();
u.setUsername("%王%");
u.setAddress("%顺义%");
//6.执行操作
List<User> users = userDao.findByUser(u);
for(User user : users) {
System.out.println(user);
}
}