一、PageHelper分页插件的使用
PageHelper是一款MyBatis的分页插件,只需要简单的配置,然后直接调用方法就可以。
1、配置PageHelper插件
在mybatis-config.xml中,配置如下
<plugins> <plugin> inteceptor="com.github.pagehelper.PageInterceptor" </plugin> </plugins>
具体mybatis-config.xml如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 打开延迟加载的开关 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 将积极加载改为消息加载即按需加载 --> <setting name="aggressiveLazyLoading" value="false"/> </settings> <typeAliases> <package name="com.demo.pojo"/> </typeAliases> <plugins> <!--配置PageHelper分页插件--> <plugin interceptor="com.github.pagehelper.PageInterceptor"> </plugin> </plugins> <!--数据库连接环境配置--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="admin"/> </dataSource> </environment> </environments> <!--映射文件配置--> <mappers> <!--基于xml方式映射--> <mapper resource="com/demo/pojo/Category.xml"/> <!--基于注解方式映射--> <mapper class="com.how2java.mapper.CategoryMapper"/> <mapper class="com.how2java.mapper.ProductMapper"/> </mappers> </configuration>
2、使用PageHelper提供的方法进行分页查询测试
package com.demo; import java.io.IOException; import java.io.InputSteam; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.io.Resouces; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.demo.pojo.Product; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; public class TestMyBatis{ public static void main(String[] args) throws IOException{ String resouce="mybatis-config.xml"; InputSteam inputStream=Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream); SqlSession session=sqlSessionFactory.openSession(); PageHelper.offsetPage(0,5);//表示从0开始,每一页显示5条数据 List<Product> list=session.selectList("listCategory"); for(Product p:list){ System.out.println(p); } PageInfo pageInfo=new PageInfo<>(p); System.out.println("总数:"+pageInfo.getTotal());//总个数 System.out.println(pageInfo);//PageInfo{pageNum=1,pageSize=5,size=5,startRow=1,end} session.commit(); session.close(); } }
3、一级缓存和二级缓存
和Hibernate一样,都是一级缓存是基于Session级别,二级缓存是SessionFactory级别的。
二、基于xml配置与基于注解方式配置的比较
XML配置方式:
优点:容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过XML配置会方便后人理解整个系统架构,修改之后直接重启应用即可
缺点:比较繁琐,配置形态丑陋,配置文件过多的时候难以管理
注解方式:
优点:方便,简洁,配置信息和Java代码放在一块,有助于增加程序的内聚性
缺点:分散到各个class文件中,所以不宜维护,修改之后需要重新打包,发布,重启应用。
小项目,参与人不多,不复杂的用注解。复杂项目,多人交互,配置量大,维护复杂度高,用配置文件。