MyBatis(6)

1. MyBatisページング
ページングプラグインは、データベーステーブルレコードのページングクエリを完了するために使用されます。
javaWEBの学習プロセスでは、JDBCを使用してデータページングを実現しました。実装の主な原則は
、クエリステートメントの後にlimitキーワードを追加してから、クエリのデータページング機能を実現することです。ただし、すべてのクエリにページングを追加する必要がある場合は、すべてのselectステートメントの後にlimitキーワードを追加する必要があります。これは、非常に大きな作業負荷です。同時に、多くのコードを変更する必要があります。
mybatisで提供されるプラグインメカニズムは、mybatisの元の処理ロジックで実行され、ロジックを追加するため、元のコードを変更する必要がなく、非常に簡単に実装できます。
mybatisのプラグインメカニズムは、基本的に指定されたクエリ操作をインターセプトし、関連するページングロジックをクエリ操作に追加します。PageHelperを
使用してページングを実行する
1.データベーステーブルを作成します

#用户基本信息表
create  table t_user(
user_id int primary key auto_increment,
user_name varchar(20),
user_age int,
user_address varchar(30)
);

2.プロジェクトを作成します
3.プロジェクト構造を変更し
ます4.Pom.xml構成の依存関係

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.6</version>
</dependency>
<!-- 配置分页依赖 -->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>5.1.2</version>
</dependency>

5.javabeanを作成します

package com.wangxing.mybatis.bean;
public class UserBean {
    
    
    private  int userid;
    private String username;
    private int userage;
    private  String useraddress;

    public int getUserid() {
    
    
        return userid;
    }

    public void setUserid(int userid) {
    
    
        this.userid = userid;
    }

    public String getUsername() {
    
    
        return username;
    }

    public void setUsername(String username) {
    
    
        this.username = username;
    }

    public int getUserage() {
    
    
        return userage;
    }

    public void setUserage(int userage) {
    
    
        this.userage = userage;
    }

    public String getUseraddress() {
    
    
        return useraddress;
    }

    public void setUseraddress(String useraddress) {
    
    
        this.useraddress = useraddress;
    }
}

6.データアクセスインターフェイスを作成します

package com.wangxing.mybatis.mapper;

import com.wangxing.mybatis.bean.UserBean;

import java.util.List;

public interface UserMapper {
    
    
    public  void insertUser(List<UserBean> userBeanList);
    public  List<UserBean> selectUser();
}

7.SQLマッピングファイル

<?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.wangxing.mybatis.mapper.UserMapper">
    
 <insert id="insertUser"  parameterType="java.util.List">
     insert into t_user values 
     <foreach collection="list" item="person" separator=",">
         (null,#{
    
    person.username},#{
    
    person.userage},#{
    
    person.useraddress})
     </foreach>
 </insert>
 <resultMap id="userMap" type="com.wangxing.mybatis.bean.UserBean">
     <id column="user_id" property="userid"></id>
     <result column="user_name" property="username"></result>
     <result column="user_age" property="userage"></result>
     <result column="user_address" property="useraddress"></result>
 </resultMap>
 <select id="selectUser" resultMap="userMap">
     select * from t_user;
 </select>
</mapper>

8.コア構成ファイルを作成します

<!-- 配置分页插件的拦截器 -->
   <plugins>
      <plugin interceptor="com.github.pagehelper.PageInterceptor">
			<!-- 配置方言,使用的是那个库  ,在PageHelper5.0之后 不需要配置-->
			<!--  <property name="dialect" value="mysql"/> -->
		</plugin>
   </plugins>

9.コードをテストします

package com.wangxing.mybatis.test;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wangxing.mybatis.bean.UserBean;
import com.wangxing.mybatis.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

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

public class TestMain {
    
    
    //得到SqlSession对象
    public static SqlSession getSqlSession()throws Exception{
    
    
        SqlSession sqlSession=null;
        SqlSessionFactory  sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
        return  sqlSessionFactory.openSession();
    }
    //得到添加到数据库表中的数据集合
    public  static List<UserBean> getData(){
    
    
        List<UserBean>  userBeanList=new ArrayList<UserBean>();
        for(int i=1;i<=100;i++){
    
    
             UserBean userBean=new UserBean();
            userBean.setUsername("zhangsan-"+i);
            userBean.setUserage(20+i);
            userBean.setUseraddress("xian-"+i);
            userBeanList.add(userBean);
        }
        return userBeanList;
    }
    //批量添加数据
    public static  void testInsert(){
    
    
        SqlSession sqlSession=null;
        try {
    
    
            sqlSession=getSqlSession();
            UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
            userMapper.insertUser(getData());
            sqlSession.commit();
        }catch (Exception e){
    
    
            e.printStackTrace();
            sqlSession.rollback();
        }finally {
    
    
            sqlSession.close();
        }
    }
    //测试分页查询
    public static  void testSelectPage(){
    
    
        SqlSession sqlSession=null;
        try {
    
    
            sqlSession=getSqlSession();
            UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
            //设置分页参数
            //设置分页的起始页码和每页的显示数据的行数
            PageHelper.startPage(2,10);
            List<UserBean> userBeanList=userMapper.selectUser();
            PageInfo<UserBean> pageInfo=new PageInfo<UserBean>(userBeanList);
            //Page<UserBean> page=(Page<UserBean>)userBeanList;
            sqlSession.commit();
            System.out.println("当前页=="+pageInfo.getPageNum());
            System.out.println("每页数量=="+pageInfo.getPageSize());
            System.out.println("当前页的数量=="+pageInfo.getSize());
            System.out.println("总记录数=="+pageInfo.getTotal());
            System.out.println("总页数=="+pageInfo.getPages());
            //得到当前页的结果集合
            List<UserBean> userlist=pageInfo.getList();
            for(UserBean  userBean:userlist){
    
    
                System.out.println(userBean.getUserid()+"   "+userBean.getUsername());
            }
        }catch (Exception e){
    
    
            e.printStackTrace();
            sqlSession.rollback();
        }finally {
    
    
            sqlSession.close();
        }
    }
    public static void main(String[] args) {
    
    
        //testInsert();
        testSelectPage();
    }
}

10.実行結果
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/guoguo0717/article/details/109629832