PageHelder分頁(Mybatis-plus)

前言:

  • 如果我們想對數據進行分頁的話,手動編寫分頁會比較的麻煩,會讓數據庫語句變得比較的複雜
  • 之前寫過一篇博客是關於傳統的數據庫分頁展示的源碼,感興趣的小夥伴可以點擊鏈接查看:Java後端實現分頁效果

 

敲代碼之前,我們需要先對從三方面對分頁的原理進行了解

分類:

  1. 內存分頁:指的是從數據庫中一次性的查詢出數據,然後根據需求的不同再從內存當中獲取(優點:減少了與數據庫的交互,缺點:分頁效率低,對內存的開銷比較多)
  2. 物理分頁:每次只從數據庫中查詢一頁的數據(優勢:效率比較高,節省內存空間,缺點:不同數據庫有不同的做法)

參數:

  1. 當前頁
  2. 每頁的顯示條數
  3. 總記錄數

 

MySQL分頁語句關鍵(select * from t_user limit 0,10):

  1. 開始記錄的索引:當前頁*每一頁需要顯示的條數
  2. 總頁數:數據庫總的記錄數%總條數==0?數據庫總的記錄數%總條數:+1                                                                                               //數據庫總的記錄數除以總條數,如果剛好就得到頁數,否則再加一頁

 

 

PageHelder項目中使用(Spring項目)

1:來一張簡單的表

2:首先先導入jar包,這裏使用Maven託管,引入pom文件

 <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.0.0</version>
    </dependency>

3:在 Spring 配置文件中配置攔截器插件

 <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:com/bruceliu/mapper/*.xml"/>
        <!--給實體類取別名-->
        <property name="typeAliasesPackage" value="com.bruceliu.pojo"/>

        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <value>
                            helperDialect=mysql
                            <!--分頁合理化參數,設置爲true時,pageNum<=0時會查詢第一頁,pageNum>pages(超過總數時),會查詢最後一頁。-->
                            reasonable=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

 4:創建實體類

public class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

5:UserMapper.java

public interface UserMapper{

    //查詢所有
    public List<User> getAll();
    
}

6:UserMapper.xml

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bruceliu.mapper.UserMapper">

    <select id="getAll" resultType="com.project.pojo.User">
        SELECT * from t_user
    </select>

</mapper>

7:UserService.java

public interface UserService {

    public List<User> getAll();


    /*分頁查詢
     *返回PageHelper提供的封裝分頁參數的PageInfo對象
    */
    PageInfo<User>findByPage(int pageNum,int pageSize);
}

8:UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;


    @Override
    public List<User> getAll() {
        List<User> user=userMapper.getAll();
        return user;
    }

  
    @Override
    public PageInfo<User> findByPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List<User>list=userMapper.getAll();
        PageInfo<User>pageInfo=new PageInfo<>(list);
        //TODO   因爲先進行測試,所以加入打印輸出語句,方便測試查看
        for(User user:list){
            System.out.println("user = " + user);
        }
        return pageInfo;
    }
}

9:數據測試:UserServiceImplTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class UserServiceImplTest {

    @Autowired
    private UserService userService;

    @Test
    public void getAll() {
        List<User>users=userService.getAll();
          Assert.assertNotNull(users);
        System.out.println("users = " + users);
    }

    @Test
    public void findByPage() {
        userService.findByPage(1,10);
      
    }
}

10:運行findByPage得到結果

 

PageHelder的官方使用方法:github官網地址

 



原創文章,未經允許禁止盜用



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章