PageHelper 在 Spring+Spring MVC+MyBatis 中的配置使用


本文檔基於配置好了的 Spring + Spring MVC + MyBatis,可以參考:

http://www.cnblogs.com/QingXiaxu/p/8144968.html

里面有源碼下載,基於其中的 ssm 代碼

 

1、添加 PageHelper 依賴

<!-- pagehelper分頁插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>

 

2、在 applicationContext.xml 中添加 PageHelper 配置(黃色背景處)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mybatis="http://mybatis.org/schema/mybatis-spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd
                        http://mybatis.org/schema/mybatis-spring 
                        http://mybatis.org/schema/mybatis-spring.xsd ">

    <!-- mybatis:scan會將com.app.mapper包里的所有接口當作mapper配置,之后可以自動引入mapper類 -->
    <mybatis:scan base-package="com.app.mapper" />

    <!-- 掃描com.app包下面的java文件,有Spring的相關注解的類,則把這些類注冊為Spring的bean -->
    <context:component-scan base-package="com.app" />

    <!-- 使用PropertyOverrideConfigurer后處理器加載數據源參數 -->
    <context:property-override location="classpath:db.properties" />

    <!-- 配置c3p0數據源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" />

    <!-- 配置SqlSessionFactory,org.mybatis.spring.SqlSessionFactoryBean是Mybatis社區開發用於整合Spring的bean -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
        p:dataSource-ref="dataSource">
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <value>
                helperDialect=mysql               </value> </property> </bean> </array> </property> </bean> <!-- JDBC事務管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" /> <!-- 啟用支持annotation注解方式事務管理 --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>

 

3、在 UserMapper.java 里面添加一個查詢所有數據的方法(黃色背景處) 

package com.app.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;

import com.app.entity.User;

public interface UserMapper {

    @Select("select * from tb_user where id = #{id}")
    User findUserById(Integer id);

    @Insert("insert into tb_user(userName, birth) values(#{userName}, #{birth})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    Integer saveUser(User user);
    
    @Select("select * from tb_user")    List<User> findAllUser();
}

  

4、Service 層

UserServer.java

package com.app.servcie;

import java.util.List;

import com.app.entity.User;

public interface UserService {

    User findUserById(Integer id);

    Integer saveUser(User user);
    
    List<User> findAllUser();
}

UserServiceImp.java

package com.app.servcie;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.app.entity.User;
import com.app.mapper.UserMapper;

@Service(value = "userService")
public class UserServiceImp implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public Integer saveUser(User user) {
        return userMapper.saveUser(user);
    }

    @Override
    public User findUserById(Integer id) {
        return userMapper.findUserById(id);
    }

    @Override     public List<User> findAllUser() {     return userMapper.findAllUser();     }

}

 

5、UserController.java 添加一個查詢所有用戶信息的接口(黃色背景處) 

package com.app.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.app.entity.User;
import com.app.servcie.UserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/insertUser")
    @ResponseBody
    public User insertUser(User user) {
        userService.saveUser(user);
        User resultUser = userService.findUserById(user.getId());
        return resultUser;
    }

    @RequestMapping("/getAllUser")
    @ResponseBody public PageInfo<User> getAllUser(@RequestParam(required = false, defaultValue = "1") Integer startPage, @RequestParam(required = false, defaultValue = "2") Integer PageSize) { PageHelper.startPage(startPage, PageSize); List<User> users = new ArrayList<User>(); users = userService.findAllUser(); PageInfo<User> pageData = new PageInfo<>(users); return pageData; }
}

PageInfo 類中定義了分頁需要的各種數據,比如 PageNum,PageSize,total 等數據,因此直接返回一個 PageInfo 的對象數據即可,這樣前端即可將這些數據用在頁面的分頁組件上。 

 

6、測試

查詢第 1 頁的 2 條數據:

 

可以看到,查詢到了“小明”、“小紅” 2 條數據。

 

查詢第 2 頁的 2 條數據:

此處由於數據庫中總共只有 3 條數據,所以查詢第 2 頁數據的時候只查詢到了“小軍”這 1 條數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM