属性tatol值与实际分页出来的集合记录总数不一样本来是只有1条记录的,但是给出的tatol有30条,当传来的PageNum大于实际有的也会返回记录(按理是没有记录的)
测试代码:
@Test
public void checkProjectItems(){
CheckProjectFactor checkProjectFactor=new CheckProjectFactor();
checkProjectFactor.setCode("12");
checkProjectFactor.setName("项");
checkProjectFactor.setDetectType("到货检测");
//checkProjectFactor.setYear("2017年");
checkProjectFactor.setUserName("小刘");
List<ProjectTableItemDto> projectTableItemDtoList=new LinkedList<>();
//System.out.println(projectCustomMapper.checkProjectTableItem(checkProjectFactor));
ProjectTableDetail projectTableDetail=new ProjectTableDetail();
Page page= PageHelper.startPage(3,30);
projectTableItemDtoList=projectCustomMapper.checkProjectTableItem(checkProjectFactor);
PageInfo info=new PageInfo<>(projectTableItemDtoList);
//Page<ProjectTableItemDto> page=(Page<ProjectTableItemDto>)projectTableItemDtoList;
System.out.println("总条数:"+page.getTotal()+"总页数"+page.getPages()+"页号"+page.getPageNum());
System.out.println(info.getPageNum());
System.out.println(projectTableItemDtoList);
}
经过多番的测试检查,问题出现Mapper.xml文件sql语句,from后面的的表名称要根据后面的判断过的字段给表名字加上作为判断
<!--根据条件查出项目-->
<select id="checkProjectTableItem" resultMap="projectTableItem">
SELECT project.id,project.manager,project.`name`,detect_type.`name` AS detectType
from project
<if test="checkProjectFactor.year !=null and checkProjectFactor.year !=''">
,year_info
</if>
,detect_type,sys_user
WHERE project.create_oper=sys_user.id
AND sys_user.username=#{checkProjectFactor.userName}
AND project.detect_type_id=detect_type.id
<if test="checkProjectFactor.year !=null and checkProjectFactor.year !=''">
AND year_info.`name`=#{checkProjectFactor.year}
AND year_info.id=project.year_info_id
</if>
<if test="checkProjectFactor.detectType !=null and checkProjectFactor.detectType !=''">
AND detect_type.`name`=#{checkProjectFactor.detectType}
</if>
<if test="checkProjectFactor.name !=null and checkProjectFactor.name !=''">
AND project.`name` LIKE CONCAT('%',#{checkProjectFactor.name},'%')/*"%${checkProjectFactor.name}%"*/
</if>
<if test="checkProjectFactor.code !=null and checkProjectFactor.code !=''">
AND project.`code` LIKE CONCAT('%',#{checkProjectFactor.code},'%')/*"%${checkProjectFactor.code}%"*/
</if>
</select>