初探Mybaties整合分页插件PageHelper(1)
Mybaites整合分页PageHelper插件
在数据进行分页,通过sql语句,mysql分页,table_name表名,pageNum 第几页,pageSize 每页数据条数:
SELECT * FROM tale_name LIMIT pageNum=? and pageSize=?
在Oracle中进行分页时,采用RowNum,
SELECT * FROM (SELECT rownum R, u.* FROM 表名 u WHERE rownum <= ?) WHERE R >=?
?=PageNo*PageSize
?=(PageNo-1)*PageSize+1
使用PageHelper插件,先引入pageHelper依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>3.7.5</version>
</dependency>
在sqlsessionfactory中配置PageHelper插件
<!--2. 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mappers/*.xml"></property>
<!--配置扫描实体类的包 -->
<property name="typeAliasesPackage" value="com.soft.entity"></property>
<property name="plugins">
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>dialect=mysql</value>
</property>
</bean>
</property>
</bean>
PageHelper是插件内置用以分页的静态类
public List<User> selectUserByPage(int pageNum, int pageSize){
PageHelper.startPage(pageNum, pageSize); // limit pageNum,pageSize
List<User> users = userDao.selectAll(); //MyBaties中查询语句
//反射形成mysql分页语句,对List<User>进行分页
return users;
}
在Mapper.xml中配置List<User>全查询
<select id="selectAll" resultType="User">
select * from User
</select>
在Controller中,从前台传入pageNum,pageSize两个参数,为了便于测试在Controller中使用GET方法
@RequestMapping(value = "/findUser",method=RequestMethod.GET)
@ResponseBody
public String selectUserByPage(int pageNum,int pageSize){
List<User> users = userService.selectUserByPage(pageNum, pageSize);
JSONObject obj=new JSONObject();
for (int i=0;i< users.size();i++) {
obj.put(i,users.get(i).toString());
}
return obj.toString();
}
从前台进行查询,结果见下