|     一.缓存          作用:应用查询上,内存中的块区域。                缓存查询结果,减少与数据库的交互,从而提高运行效率。         1.SqlSession 缓存  |   1. 又称为一级缓存,mybatis自动开启。  2. 作用范围:同一个session对象,调用同一个<select>,              第一次访问数据库,缓存到session缓存区。   |  
    示例  |   //获取学生的Mapper对象 StudentMapper studentMapper=session.getMapper(StudentMapper.class); //调用方法,获取所有的学生信息 List<Student> list=studentMapper.selectAll(); for (Student stu:list) {      System.out.println(stu); } System.out.println("----------------------------------------------"); //调用方法,获取所有的学生信息 List<Student> list2=studentMapper.selectAll(); for (Student stu:list2) {      System.out.println(stu); }  效果:    |          2.SqlSessionFactory 缓存  |   1. 又称为二级缓存,mybatis 不自动开启。  2. 作用范围:同一个SqlSessionFactory对象中所有session都可以获取。  3. 打开mapper.xml配置开启二级缓存        <cache readOnly="true"></cache>  4.只有当session.close()或commit()时,     才会将session缓存的数据刷新到factory二级缓存中。  5. 适用于:频繁查询,很少被修改。   |  
      实例  |   SqlSession session=sessionFactory.openSession(); //获取学生的Mapper对象 StudentMapper studentMapper=session.getMapper(StudentMapper.class); //调用方法,获取所有的学生信息 List<Student> list=studentMapper.selectAll(); for (Student stu:list) {      System.out.println(stu); } //只有当session.close()或commit(),才会将session缓存的数据刷新到factory二级缓存中 session.close(); System.out.println("----------------------------------------------"); SqlSession session2=sessionFactory.openSession(); StudentMapper studentMapper2=session2.getMapper(StudentMapper.class); //调用方法,获取所有的学生信息 List<Student> list2=studentMapper2.selectAll(); for (Student stu:list2) {      System.out.println(stu); }  效果:      |     二.Mybatis注解        作用:简化mapper.xml配置,mapper.xml配置和注解可以共存                   一般动态sql或复杂的sql语句,推荐使用mapper.xml配置         1. 常用注解  |   @Delete(“delete语句”)   |   等价于<delete>标签   |  |   @Insert(“insert语句”)   |   等价于<insert>标签   |  |   @Update(“update语句”)   |   等价于<update>标签   |  |   @Select(“select语句”)   |   等价于<select>标签   |  
         示例:  |   @Delete("delete from student where sid=#{id}") public int deleteById(int id);    @Select("select * from student") public List<Student> selectAll();   @Insert("insert into student values(#{sid},#{stuName},#{age},#{tid})") public int  add(Student stu);   @Update("update student set stu_name=#{stuName},age=#{age},tid=#{tid} where sid=#{sid} ") public int  update(Student stu);   |     三.PageHelper 分页插件       PageHelper 是 MyBatis 中比较著名的分页插件,它提供了多种分页方式(例如 MySQL 和 Oracle 分页方式),支持多种数据库,并且使用非常简单。     下面就介绍一下 PageHelper 的使用方式。       1.pom.xml引入依赖  |   <!--分页--> <dependency>     <groupId>com.github.pagehelper</groupId>     <artifactId>pagehelper</artifactId>     <version>5.1.11</version> </dependency>   |          2.mybatis.xml配置文件中添加 PageHelper 的插件  |   <!--添加 PageHelper 分页插件--> <!--com.github.pagehelper.PageInterceptor 是 PageHelper 插件的名称,    dialect 属性用于指定数据库类型(支持多种数据库)--> <plugins>     <plugin interceptor="com.github.pagehelper.PageInterceptor">         <property name="helperDialect" value="mysql"/>     </plugin> </plugins>   |         3.查询所有的老师信息的mapper  |   public interface TeacherMapper {      @Select("select * from teacher")      List<Teacher> selectAll(); }   |          4.在查询方法中使用分页插件查询当前页的商品信息  |   @Test public void testTeacherPage() {      TeacherMapper teacherMapper = session.getMapper(TeacherMapper.class);      //开启分页功能,在查询之前,设置分页的当前页以及每页的条数     PageHelper.startPage(2,2);      //执行查询操作,获取查询数据      List<Teacher> allTeachers = teacherMapper.selectAll();      //通过PageInfo封装查询的list数据集合以及分页相关的数据     PageInfo<Teacher> pageInfo = new PageInfo<>(allTeachers);      System.out.println("pageInfo = " + pageInfo);      long total = pageInfo.getTotal(); // 获取总记录数     System.out.println("total = " + total);      int pages = pageInfo.getPages();  // 获取总页数     System.out.println("pages = " + pages);      int pageNum = pageInfo.getPageNum(); // 获取当前页码     System.out.println("pageNum = " + pageNum);      int pageSize = pageInfo.getPageSize(); // 获取每页显示记录数     System.out.println("pageSize = " + pageSize);      List<Teacher> list = pageInfo.getList(); //获取查询页的数据集合     for (Teacher t:list) {          System.out.println(t);     } }   |  
 PageInfo对象获取分页相关信息的属性  |   方法名   |   描述   |  |   pageNum   |   当前页的页号   |  |   pageSize   |   每页显示的条数   |  |   size   |   当前页的实际条数   |  |   total   |   总条数   |  |   pages   |   总页数   |  |   prePage   |   上一页的页号   |  |   nextPage   |   下一页的页号   |  |   isFirstPage   |   是否为第一页   |  |   isLastPage   |   是否为最后一页   |  |   hasPreviousPage   |   是否存在上一页   |  |   hasNextPage   |   是否存在下一页   |  |   navigatePages   |   导航分页的页码数   |  |   navigatepageNums   |   导航分页的页码,[1,2,3,4,5]   |      |