Mybatis配置分页

  • Post author:
  • Post category:其他


测试

package com.sky.test;

import com.sky.controller.UserController;
import com.sky.pojo.Emp;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class Demo {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserController userController = (UserController) applicationContext.getBean("userController");
        List<Emp> emps = userController.getEmps(2,5);
        System.out.println(emps);
    }

}

controller

package com.sky.controller;


import com.sky.pojo.Emp;
import com.sky.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import java.util.List;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    public List<Emp> getEmps(int pageNum,int pageSize){
        return userService.getEmps(pageNum,pageSize);
    }

}

service

package com.sky.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sky.mapper.EmpMapper;
import com.sky.pojo.Emp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private EmpMapper empMapper;

    public List<Emp> getEmps(int pageNum,int pageSize) {
//        开启分页查询
//        pageNum:第几页 ; pageSize:一页有几条数据
        PageHelper.startPage(pageNum,pageSize);
        List<Emp> emps = empMapper.getEmps();
//        用PageInfo对结果进行封装
//        PageInfo包含非常全面的分页属性
        PageInfo page = new PageInfo(emps);
        System.out.println(page);
        return emps;
    }
}

在这里插入图片描述

mapper

package com.sky.mapper;

import com.sky.pojo.Emp;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface EmpMapper {

    List<Emp> getEmps();
}

mapperxml

<?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="com.sky.mapper.EmpMapper">

  <select id="getEmps" resultType="Emp">
      select * from emp
  </select>
  
</mapper>

spring、Mybatis选一个配置

MybatisConfig.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">
<!--    dtd 约束 , 限制了这个文件里的标签使用-->
<!--    配置文件的内容-->
<configuration>

    <settings>
<!--        打印sql语句-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
<!--        驼峰自动转换-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
<!--        二级缓存-->
        <setting name="cacheEnabled" value="true" />
    </settings>
<!--    配置别名-->
    <typeAliases>
        <package name="com.sky.pojo"/>
    </typeAliases>

    <!--
        plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
        properties?, settings?,
        typeAliases?, typeHandlers?,
        objectFactory?,objectWrapperFactory?,
        plugins?,
        environments?, databaseIdProvider?, mappers?
    -->
    <plugins>
        <!-- com.github.pagehelper为PageHelper类所在包名
            注意:pagehelper的版本是5.0之后的版本使用com.github.pagehelper.PageInterceptor这个类。
         -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 指定使用的数据库,自4.0.0以后的版本已经可以自动识别数据库了,所以不需要我们再去指定数据库-->
            <property name="dialect" value="mysql"/>
            <!-- 该参数默认为false -->
            <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
            <!-- 和startPage中的pageNum效果一样-->
            <property name="offsetAsPageNum" value="true"/>
            <!-- 该参数默认为false -->
            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
            <property name="rowBoundsWithCount" value="true"/>
            <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
            <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
            <property name="pageSizeZero" value="true"/>
            <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
            <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
            <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>

</configuration>

spring配置分页

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <property name="mapperLocations">
    <array>
      <value>classpath:mapper/*.xml</value>
    </array>
  </property>
  <property name="typeAliasesPackage" value="com.isea533.ssm.model"/>
  <property name="plugins">
    <array>
      <bean class="com.github.pagehelper.PageHelper">
        <property name="properties">
          <value>
            dialect=hsqldb
            reasonable=true
          </value>
        </property>
      </bean>
    </array>
  </property>
</bean>



版权声明:本文为Stardust_fantasy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。