实现table的分页,如果查询的数据是多表查询,分页查询时只有第一页,解决方法:可以对查询的数据正常分页,再写个SQL语句查询数据总个数
配置:SqlSessionFactoryBean中
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="typeAliasesPackage" value="com.jsqj.regcontrol.bean">
</property>
<!-- 传入PageHelper 分页插件 -->
<property name="plugins">
<array>
<!-- 传入插件的对象 -->
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<!--数据库类型-->
<prop key="helperDialect">mysql</prop>
<!--页码超出范围自动修正-->
<prop key="reasonable">true</prop>
</props>
</property>
</bean>
</array>
</property>
</bean>
不使用maven,需要添加jar包(版本根据情况)
jsqlparser-1.0.jar
pagehelper-5.1.4.jar
demo结构
DAO层:
public class Student {
private String id;
private String name;
private Integer age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
**mapper层;**
public interface StudentMapper {
List<Student> selectAll();
int count();
}
**service层**
public interface StudentService {
List<Student> selectAll(Integer pageNum,Integer pageSize);
int count();
}
**serviceImpl层**
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper stu;
@Override
public List<Student> selectAll(Integer pageNum,Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
List<Student> students = stu.selectAll();
return students;
}
@Override
public int count() {
return stu.count();
}
}
**controller层**
@RestController
@RequestMapping("/findAll")
public class FindAll {
@Autowired
private StudentServiceImpl stu;
/**
* layui中table表分页,默认是page=1,limit=10,与pagehaper参数对应,
* layui中还需要数据的总个数count
* @param pageNum
* @param pageSize
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping("/student")
public String student(@RequestParam("page") Integer pageNum, @RequestParam("limit") Integer pageSize) throws Exception {
List<Student> students = stu.selectAll(pageNum, pageSize);
int count = stu.count();
JSONObject json = new JSONObject();
json.put("code", 0);
json.put("count", count);
json.put("data", students);
return json.toString();
}
}
**xml文件**
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.dao.StudentMapper" >
<resultMap id="BaseResultMap" type="com.example.bean.Student" >
<result column="id" property="id" jdbcType="VARCHAR" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
</resultMap>
<select id="selectAll" resultMap="BaseResultMap">
select * from student
</select>
<select id="count" resultType="java.lang.Integer" >
select count(*) from student
</select>
</mapper>
**HTML页面和数据绑定**
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="../layui/css/layui.css" media="all">
<!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
<table class="layui-hide" id="test"></table>
<script src="../layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
layui.use('table', function(){
var table = layui.table;
table.render({
elem: '#test'
,url:'/findAll/student'
,cols: [
[
{field:'id', width:80, title: 'ID', sort: true}
,{field:'name', width:80, title: '姓名'}
,{field:'age', width:80, title: '年龄', sort: true}
]
]
,page: true//开启分页,默认page=1,limit=10
});
});
</script>
</body>
</html>