从头到尾看了一下午源码,已解决!!!
Service层的代码为
//1. 设置分页参数(PageHelper) PageHelper.startPage(params.getPage(), params.getPageSize()); //2. 执行查询 List<Emp> empList = empMapper.findAll(params); //3. 解析查询结果, 并封装 Page<Emp> p = (Page<Emp>) empList; return new PageResult<Emp>((int)p.getTotal(), p.getResult());
EmpMapper.xml代码为
<mapper namespace="org.example.mapper.EmpMapper"> <select id="findAll" resultType="org.example.pojo.Emp"> select emp.*,dept.name from emp left join dept on emp.dept_id = dept.id where emp.name like concat('%',#{name},'%') and emp.gender= #{gender} and emp.entry_date between #{begin} and #{end} limit #{page} ,#{pageSize} </select> </mapper>
注意:Mybatis拦截器将PageHelper.startPage的 SQL命令进行了拦截并且又添加了一句limit命令(分页函数)与xml里的 limit 语句 产生了冲突。所以查询不到正确数据,且控制台不会报错。
解决方法:将xml代码中的limit命令删掉 ,前端就可以正确查询数据了
<mapper namespace="org.example.mapper.EmpMapper"> <select id="findAll" resultType="org.example.pojo.Emp"> select emp.*,dept.name from emp left join dept on emp.dept_id = dept.id where emp.name like concat('%',#{name},'%') and emp.gender= #{gender} and emp.entry_date between #{begin} and #{end} </select> </mapper>