本篇文章主要写mybaits插件的使用过程,其中包括:
- 原理简单解析
- mybatis配置(单独mybatis的配置和结合spring的配置)
- mybatisPageHelper使用(两个方法)
- 总结
代码完整
PageHelper就是只需要调用方法就可以进行对数据表提取数据的时候进行分页。
主要特点:
- 不需要关心数据库是什么类型,支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库
- 非常简单实用。
<configuration>
<properties resource="db.properties"/>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
plugin>
plugins>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="mapper/personDao.xml"/>
mappers>
configuration>
4.结合spring的配置文件,只需要在mybatis配置文件加入以下代码就可以
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
params=value1
value>
property>
bean>
array>
property>
bean>
//加载mybaits文件
private SqlSession getPersonDao(String resource){
InputStream inputStream= null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
@Test
public void getPerson(){
//首先获取全部数据
SqlSession sqlSession=getPersonDao("mybaits-config.xml");
personDao mapper = sqlSession.getMapper(personDao.class);
//方法一:
//取第1页的数据,第一页显示10行
PageHelper.startPage(1, 10);
//得到的peopleList 类型是Page,Page类型里面包含了count, pageNum, pageSize,
// startRow, endRow, total, pages, reasonable, pageSizeZero 变量
List peopleList=mapper.getData();
//可以直接输出看看有什么变量
System.out.println(peopleList.toString());
//如果需要使用Page 的方法获取属性 需要方法一是:强制转换,方法二是 pageInfo。
//方法一:
System.out.println("获取一下总数 "+((Page)peopleList).getTotal());
System.out.println("总页数有 "+((Page)peopleList).getPages());
System.out.println(peopleList.get(1));
//方法二:
//pageInfo对结果进行封装
PageInfo pageInfo=new PageInfo(peopleList);
System.out.println("获取一下总数 "+pageInfo.getTotal());
//遍历数据
for (Person aPeopleList : peopleList) {
System.out.println(aPeopleList);
}
}
输出内容:
Page{count=true, pageNum=1, pageSize=10, startRow=0, endRow=10, total=300, pages=30, reasonable=false, pageSizeZero=false}
获取一下总数 300
总页数有 30
Person{id=2, person_name='小明2', hobby='篮球', age=1}
获取一下总数 300
Person{id=1, person_name='小明1', hobby='篮球', age=1}
Person{id=2, person_name='小明2', hobby='篮球', age=1}
Person{id=4, person_name='小明3', hobby='篮球', age=1}
Person{id=5, person_name='小明4', hobby='篮球', age=1}
Person{id=6, person_name='小明5', hobby='篮球', age=1}
Person{id=7, person_name='小明6', hobby='篮球', age=1}
Person{id=8, person_name='小明7', hobby='篮球', age=1}
Person{id=9, person_name='小明8', hobby='篮球', age=1}
Person{id=10, person_name='小明9', hobby='篮球', age=1}
Person{id=11, person_name='小明10', hobby='篮球', age=1}
1.可以看出来代码量很少,是非常轻量级的,非常好用。只是配置的过程中可能会浪费一点时间,不过配置完后用起来就很舒服了。
2. 主要配置文件的信息,这些是我掉过得坑。插件的位置以及版本需要注意好!!!