使用实体类的包装对象作为查询条件
我们知道,Sql语句传参,使用标签的parameterType属性来设定。该属性的取值可以是基本类型,引用类型(例如:String类型),还可以是实体类类型(POJO类)。同时也可以使用实体类的包装类。
注意事项:
基本类型和String类型我们可以直接写类型名称,也可以使用包名.类名的方式,例如:java.lang.String。
传递pojo包装对象
开发中通过pojo传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件,还可以包括其他的查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。
示例:根据name查询员工信息,查询条件放到QueryVo的emp属性中。
编写QueryVo
/**
* 查询条件对象
*/
public class QueryVo {
private Emp emp;
public Emp getEmp() {
return emp;
}
public void setEmp(Emp emp) {
this.emp = emp;
}
}
编写持久层接口
/**
* 根据QueryVo中的条件查询用户
* @param vo
* @return
*/
List<Emp> findByVo(QueryVo vo);
持久层接口的映射文件
<!--根据名称模糊查询,参数变成一个QueryVo对象-->
<select id="findByVo" resultType="com.tedu.domain.Emp" parameterType="com.tedu.domain.QueryVo">
select * from emp where name like #{emp.name}
</select>
测试包装类作为参数
/**
* 测试QueryVo查询
* @throws IOException
*/
@Test
public void TestFindByQueryVo() throws IOException {
QueryVo vo = new QueryVo();
Emp emp = new Emp();
emp.setName("%王%");
vo.setEmp(emp);
//5.使用代理对象执行方法
List<Emp> emps = empDao.findByVo(vo);
for (Emp e : emps) {
System.out.println(e);
}
}