SSM分页查询简解

基于MyBatis分页插件的简解

一、在spring配置文件中配置分页插件

在Spring配置MyBatis中配置分页插件 

<!--    配置Mybatis-->
<!--    配置SqlSessionFactoryBean,可以直接在Spring的IOC中获取SqlSessionFactory-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!--        设置MyBatis的核心配置文件的路径-->
        <property name="dataSource" ref="dataSouerce"></property>
<!--        设置Mybatis数据源-->
        <property name="configLocation" value="classpath:maybatis-cofng.xml"></property>

<!--        设置映射文件的路径 mapper下的所有xml, 只有映射文件的包和mapper接口的包不一致时候才需要设置-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
<!--       配置分页插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor"></bean>
            </array>
        </property>
    </bean>

 二、在@Service中实现分页方法

 PageHelper.startPage(pageNum,4)开启分页功能 ,设置当前页码的列数


 List<Employee> list=employeeMapper.getAllEmployee(); //查询所有数据


        PageInfo<Employee> page=new PageInfo<>(list,3);//把数据进行分页处理,设置导航分页长度为3

@Service
@Transactional //事务作用与类的所有方法
public class EnmployeeServerImp implements EnmployeeServer {
    @Autowired
    private EmployeeMapper employeeMapper; //相对于dao
    @Override
    public List<Employee> getAllEmployee() {
        return employeeMapper.getAllEmployee();
    }

    @Override //分页功能
    public PageInfo<Employee> getEmployeege(Integer pageNum) {

        //开启分页功能 会影响下面的查询语句  (设置 当前页码 每页条数)
        PageHelper.startPage(pageNum,4);
        //查询所有数据
        List<Employee> list=employeeMapper.getAllEmployee();
        // 把数据分页 导航页的原点
        PageInfo<Employee> page=new PageInfo<>(list,3);
        return page;
    }
}

 三、在@Controller层编写消息接收方法

创建PageInfo 实现类接收分好页的数据

 //分页查询
    @RequestMapping(value = "/employee/page/{pageNum}",method = RequestMethod.GET)
    public String getAllEmployeePage(@PathVariable("pageNum") Integer pageNum,Model model){
        //获取员工的分页信息 将页码获取分页数据
        PageInfo<Employee> page=enmployeeServer.getEmployeege(pageNum);
        //将分页数据共享到请求域中
        model.addAttribute("page",page);
        return "Employee_page";
    }
    //查询所有员工
    @RequestMapping(value = "/employee",method = RequestMethod.GET)
    public String getAllEmployee(Model model){
        //查询员工信息
       List<Employee> list= enmployeeServer.getAllEmployee();
       //将员工信息在请求域共享
       model.addAttribute("list",list);
       return "Employee_list";

    }

PageInfo{ pageNum=8, pageSize=4, size=2, startRow=29, endRow=30, total=30, pages=8, list=Page{count=true, pageNum=8, pageSize=4, startRow=28, endRow=32, total=30, pages=8, reasonable=false, pageSizeZero=false}, prePage=7, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true, hasNextPage=false, navigatePages=5, navigateFirstPage4, navigateLastPage8, navigatepageNums=[4, 5, 6, 7, 8] }

list: 当前页的数据

pageNum:当前页的页码

pageSize:每页显示的条数

size:当前页显示的真实条数

total:总记录数

pages:总页数

prePage:上一页的页码

nextPage:下一页的页码

isFirstPage/isLastPage:是否为第一页/最后一页

hasPreviousPage/hasNextPage:

是否存在上一页/下一页

navigatePages:导航分页的页码数

navigatepageNums:导航分页的页码,[1,2,3,4,5]

 

四、在逻辑视图中使用分页数据

<div style="text-align: center">
<!--      判断是否发首页-->
      <a th:if="${page.hasPreviousPage}"  th:href="@{/employee/page/1}">首页</a>
<!--  判断是否是首页  其他不显示-->
  <a th:if="${page.hasPreviousPage}"  th:href="@{'/employee/page/'+${page.prePage}}">上一页</a>
<!--  导航分页-->
  <span th:each="num : ${page.navigatepageNums}">
<!--    当前页面为目标页面时为红色且【】围绕-->
    <a  th:if="${page.pageNum==num}" style="color: red" th:href="@{'/employee/page/'+${num}}" th:text="'['+${num}+']'"></a>
    <!--    当前页面为不是目标页面只是显示-->
    <a  th:if="${page.pageNum!=num}" th:href="@{'/employee/page/'+${num}}" th:text="${num}"></a>
  </span>
  <a th:if="${page.hasNextPage}"  th:href="@{'/employee/page/'+${page.nextPage}}">下一页</a>
  <a th:if="${page.hasNextPage}"  th:href="@{'/employee/page/'+${page.pages}}">末页</a>
</div>

五、效果图

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSMSpring + SpringMVC + MyBatis)中使用PageHelper进行分页查询是一种常见的做法。以下是使用PageHelper实现分页查询的步骤: 1. 首先,在项目的依赖管理中添加PageHelper的相关依赖。你可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>版本号</version> </dependency> ``` 请注意,将“版本号”替换为PageHelper的最新版本号。 2. 在Spring配置文件(例如applicationContext.xml)中配置PageHelper的插件。添加以下配置: ```xml <bean id="pageHelper" class="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> </bean> ``` 请注意,这里的dialect属性值可能需要根据你使用的数据库类型进行相应的设置。 3. 在你的DAO层接口中,添加使用PageHelper进行分页查询的方法。例如: ```java List<Entity> findEntitiesByPage(int pageNum, int pageSize); ``` 4. 在DAO层的XML映射文件中,使用PageHelper提供的插件进行分页查询。在查询语句之前添加以下配置: ```xml <select id="findEntitiesByPage" parameterType="map" resultMap="entityResultMap"> <!-- 此处为PageHelper提供的插件 --> <include refid="PageHelper.startPage"/> SELECT * FROM your_table <!-- 此处为PageHelper提供的插件 --> <include refid="PageHelper.endPage"/> </select> ``` 请注意,将"your_table"替换为你的实际表名,并且确保映射文件中已定义相应的结果映射。 5. 在Service层或Controller层调用DAO层的分页查询方法,传入页码和每页大小参数。 这样,你就可以使用PageHelper实现SSM分页查询了。记得在每次查询之后,需要手动清除ThreadLocal中的分页参数,以免对其他查询产生影响: ```java PageHelper.clearPage(); ``` 希望能对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值