mybatis中使用插件PageHelper

https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md是插件的使用介绍:

 

1.新建数据库

CREATE TABLE category_ (
        id int(11) NOT NULL AUTO_INCREMENT    PRIMARY KEY ,
        name varchar(32) DEFAULT NULL
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

    INSERT INTO category_ VALUES (1,'category1');
    INSERT INTO category_ VALUES (2,'category2');
 

2.新建lib,导入库,引入jar包,PageHelper必用的插件

pagehelper-5.1.0-beta2.jar,jsqlparser-1.0.jar

3.新建mytatis的配置mybatis-config.xml,log4j的配置log4j.properties

<?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">
<configuration>
<settings>
    <!-- 打开延迟加载的开关 -->
    <setting name="lazyLoadingEnabled" value="true" />
    <!-- 将积极加载改为消息加载即按需加载 -->
    <setting name="aggressiveLazyLoading" value="false"/>
</settings>
<typeAliases>
    <package name="com.how2java.pojo"/>
</typeAliases>
<!--    表示开启PageHelper插件-->
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
    </plugin>
</plugins>
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </dataSource>
    </environment>
</environments>
<mappers>
    <mapper resource="com/how2java/pojo/Category.xml"/>
    <mapper class="com.how2java.mapper.CategoryMapper"/>
    <mapper class="com.how2java.mapper.ProductMapper"/>
</mappers>

</configuration>

 

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.how2java=ERROR
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

 

4.新建MybatisTest1类,分类表里的数据都删除掉,然后新增100个数据

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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 com.how2java.pojo.Category;
/**
 * @author lenovo
 */
public class MybatisTest2 {

    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        List<Category> cs = session.selectList("listCategory");
        for (Category c : cs) {
            session.delete("deleteCategory", c);
        }
        for (int i = 0; i < 100; i++) {
            Category c = new Category();
            c.setName("category name " + i);
            session.insert("addCategory", c);
        }
        List<Category> cs2 = session.selectList("listCategory");
        for (Category c : cs2) {
            System.out.println(c.getName());
        }

        session.commit();
        session.close();

    }
}

运行结果;

category name 99
category name 98
category name 97
category name 96
category name 95
category name 94
category name 93
category name 92
category name 91
category name 90
category name 89
category name 88
category name 87
category name 86
category name 85
category name 84
category name 83
category name 82
category name 81
category name 80
category name 79
category name 78
category name 77
category name 76
category name 75
category name 74
category name 73
category name 72
category name 71
category name 70
category name 69
category name 68
category name 67
category name 66
category name 65
category name 64
category name 63
category name 62
category name 61
category name 60
category name 59
category name 58
category name 57
category name 56
category name 55
category name 54
category name 53
category name 52
category name 51
category name 50
category name 49
category name 48
category name 47
category name 46
category name 45
category name 44
category name 43
category name 42
category name 41
category name 40
category name 39
category name 38
category name 37
category name 36
category name 35
category name 34
category name 33
category name 32
category name 31
category name 30
category name 29
category name 28
category name 27
category name 26
category name 25
category name 24
category name 23
category name 22
category name 21
category name 20
category name 19
category name 18
category name 17
category name 16
category name 15
category name 14
category name 13
category name 12
category name 11
category name 10
category name 9
category name 8
category name 7
category name 6
category name 5
category name 4
category name 3
category name 2
category name 1
category name 0

 

5.在mybatis-config.xml中配置插件:表示开启PageHelper插件

<?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">
<configuration>
    <settings>  
            <!-- 打开延迟加载的开关 -->  
            <setting name="lazyLoadingEnabled" value="true" />  
            <!-- 将积极加载改为消息加载即按需加载 -->  
            <setting name="aggressiveLazyLoading" value="false"/>  
        </settings>    
    <typeAliases>
      <package name="com.how2java.pojo"/>
    </typeAliases>
<!--    表示开启PageHelper插件-->
   <plugins>
       <plugin interceptor="com.github.pagehelper.PageInterceptor">
      </plugin>
   </plugins>      
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/how2java/pojo/Category.xml"/>
        <mapper class="com.how2java.mapper.CategoryMapper"/>  
        <mapper class="com.how2java.mapper.ProductMapper"/>  
    </mappers>
  
</configuration>

6.在Category.xml中注释掉,limit的作用,因为分页相关工作,会由PageHelper去做掉,不需要自己去写了

<?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.how2java.pojo">
       <insert id="addCategory" parameterType="Category" >
           insert into mybatis.category_ ( name ) values (#{name})
       </insert>
       
       <delete id="deleteCategory" parameterType="Category" >
           delete from mybatis.category_ where id= #{id}
       </delete>
       
       <select id="getCategory" parameterType="_int" resultType="Category">
           select * from   mybatis.category_  where id= #{id}
       </select>

       <update id="updateCategory" parameterType="Category" >
           update mybatis.category_ set name=#{name} where id=#{id}
       </update>
<!--   因为分页相关工作,会由PageHelper插件去做掉,不需要自己去写了    -->
   <select id="listCategory" resultType="Category">
           select * from   mybatis.category_

<!--            <if test="start!=null and count!=null"> -->
<!--               limit #{start},#{count} -->
<!--            </if> -->
       </select>      
   </mapper>

7.创建测试类,

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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 com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.how2java.pojo.Category;

/**分页查询,并获取总数
 * @author lenovo
 */
public class MybatisTest2 {
    public static void main(String[] args) throws IOException, InterruptedException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();

//        PageHelper.offsetPage(0, 5);表示查出第一页的数据,每页5条
        PageHelper.offsetPage(0, 5);

        List<Category> cs = session.selectList("listCategory");
        for (Category c : cs) {
            System.out.println(c.getName());
        }
//        PageInfo page= new PageInfo<>(cs);获取分页信息,包括总数以及其他的
        PageInfo pageInfo = new PageInfo<>(cs);
        System.out.println("总数:"+pageInfo.getTotal());
        System.out.println(pageInfo);

        session.commit();
        session.close();
    }
}

 

运行结果:

category name 99
category name 98
category name 97
category name 96
category name 95
总数:100
PageInfo{pageNum=1, pageSize=5, size=5, startRow=1, endRow=5, total=100, pages=20, list=Page{count=true, pageNum=1, pageSize=5, startRow=0, endRow=5, total=100, pages=20, reasonable=false, pageSizeZero=false}, prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=8, navigateFirstPage=1, navigateLastPage=8, navigatepageNums=[1, 2, 3, 4, 5, 6, 7, 8]}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值