读书人

mybatis上简单分页的一种实现

发布时间: 2012-09-12 09:21:30 作者: rapoo

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(    [totalPages] => 2    [totalRows] => 39    [nowPage] => 1    [pageSize] => 1    [data] => 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 mapperPUBLIC "-//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));}}
?

读书人网 >编程

热点推荐