public class EmployeeF04BLogic {
@Autowired
private EmployeeMapper employeeMapper;
public String execute() {
Page<Object> objects = PageHelper.startPage(2, 1);
objects.setDialectClass("mysql"); //我設(shè)置了這個(gè)
List<Integer> integers = employeeMapper.EmployeeF04SQL02();
System.out.println(integers);
return "成功";
}
}
注意我上面的objects.setDialectClass("mysql");
一般也不會(huì)有這種寫法,但是注意的是,這樣寫可能會(huì)報(bào)錯(cuò),當(dāng)你
<property name="helperDialect" value="mysql"/>時(shí)
將會(huì)報(bào)nullpointExcetion
查看源碼發(fā)現(xiàn)

image.png
只有這兩個(gè)條件下才會(huì)設(shè)置properties
當(dāng)我們objects.setDialectClass("mysql"); 看看分頁(yè)攔截器是如果執(zhí)行
1.先看要不要分頁(yè)

image.png
2.因?yàn)槲以O(shè)置了分頁(yè),page不可能為空,所以走非空邏輯

image.png
3.我設(shè)置了dialectClass,所以走不為空的邏輯,而且properties為空的

image.png
4.properties為空所以報(bào)錯(cuò)了

image.png

image.png
5.解決方案
- 去掉<property name="helperDialect" value="mysql"/>,讓它自己設(shè)置
2.設(shè)置<property name="autoRuntimeDialect" value="true"/>