赤色烙印 发表于 2016-11-26 09:15:08

mybatis下简单分页的一种实现

  1、获取sqlsessionfactory的工具类
  


package test2;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlSessionFactory {
private static org.apache.ibatis.session.SqlSessionFactory factory = null;
public static org.apache.ibatis.session.SqlSessionFactory getSqlSessionFactory() {
if(factory == null){
Reader reader = null;
try {
reader = Resources.getResourceAsReader("configure.xml");
factory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("获取SqlSessionFactory出错!",e);
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return factory;
}
}

  2、分页代码
  


/*
* pageSize:页大小
* nowPage:显示第几页
*
* return :
* Map(
=> 2
=> 39
=> 1
=> 1
=> List<
Map{
key1 => value1
key2 => value2
}
>
*/
public Map<String,Object> getAreasWithPage(String title,int pageSize,int nowPage) {
Map<String,Object> map = new HashMap<String, Object>();
SqlSession session = SqlSessionFactory.getSqlSessionFactory().openSession();
try {
//总记录数
Map<String,Object> map1 = (session.selectOne("test2.area.findByTitle_count", "%"+title+"%"));
int totalRows = Integer.parseInt(map1.get("totalRows")+"");
//总页数
int totalPages = (totalRows/pageSize==0?totalRows/pageSize:totalRows/pageSize+1);
//计算偏移量,即起始记录行数
int offset = (nowPage-1)*pageSize;
RowBounds rowBounds = new RowBounds(offset, pageSize);
List<Map<Object,Object>> list = session.selectList("test2.area.findByTitle", "%"+title+"%", rowBounds);
map.put("data", list);
map.put("totalPages", totalPages);
map.put("totalRows", totalRows);
map.put("nowPage", nowPage);
map.put("pageSize", pageSize);
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
return map;
}
  3、相应配置
  


<?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="test2.area">
<select id="getAreaByAreaId" parameterType="int" resultType="hashmap">
select * from ts_area where area_id =#{area_id}
</select>
<select id="findByTitle" parameterType="String" resultType="hashmap">
select * from ts_area where title like #{title}
</select>
<select id="findByTitle_count" parameterType="String" resultType="hashmap">
select count(*) as totalRows from ts_area where title like #{title}
</select>
<select id="getAreasByPid" parameterType="int" resultType="hashmap">
select * from ts_area where pid =#{pid}
</select>
</mapper>
  4、测试代码
  


public class Test {
public static void main(String[] args) {
AreaService areaService = new AreaService();
System.out.println(areaService.getAreasWithPage("县", 2, 791));
}
}
 
页: [1]
查看完整版本: mybatis下简单分页的一种实现