PageHelper 分页插件

只要你可以保证在PageHelper方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为PageHelper在finally代码段中自动清除了ThreadLocal存储的对象。

项目实战

1、依赖

<!-- mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>
<!-- mysql-connector-java 连接数据库,版本最好和数据库的版本一致 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>

2、编写 mybatis 配置文件 mybatis-config.xml

<?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>

    <!--  分页插件  -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="mysql"/>
        </plugin>
    </plugins>

    <!-- 运行环境的配置  可以配置很多个 (mybatis连接数据库)environments中每个environment都是一个运行环境  default 默认启用的运行环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 事务管理器 -->
            <transactionManager type="JDBC" />
            <!-- 配置数据源   type="POOLED" 以连接池的方式连接-->
            <dataSource type="POOLED">
                <!-- 驱动 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <!-- 数据库的地址 -->
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true" />
                <!-- 数据库用户名 -->
                <property name="username" value="root" />
                <!-- 数据库密码 -->
                <property name="password" value="admin" />
            </dataSource>
        </environment>
    </environments>

    <!-- 使用映射器接口实现类的完全限定类名 -->
    <mappers>
        <mapper class="com.hkp.mapper.UserMapper"/>
    </mappers>
</configuration>

3、编写实体类

@Data
public class User {
    private int id;
    private String name;
    private String password;
}

4、编写接口

public interface UserMapper {
    @Select("select * from user")
    List<User> getAll();
}

5、编写测试代码

@Test
public void test() throws Exception {
    //读取mybatis 核心配置文件
    InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    //创建工厂构建器
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();

    //使用 mybatis 核心配置文件 构建工厂
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

    //打开 sql 会话(跟数据库打开了一个会话)
    SqlSession sqlSession = sqlSessionFactory.openSession();

    //使用sql会话执行sql语句
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    // 分页设置(主要要和查询语句紧挨着,中间不许有其他代码)
    // 第一个参数是页码,第二个参数是每页的数量
    PageHelper.startPage(1,3);
    // PageInfo{pageNum=1, pageSize=3, size=3, startRow=1, endRow=3, total=5, pages=2, list=Page{count=true, pageNum=1, pageSize=3, startRow=0, endRow=3, total=5, pages=2, reasonable=false, pageSizeZero=false}[User(id=1, name=Jone, password=18), User(id=3, name=Tom, password=28), User(id=11, name=1, password=1)], prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=8, navigateFirstPage=1, navigateLastPage=2, navigatepageNums=[1, 2]}
    List<User> user = mapper.getAll();
    // 把查询出来的集合变成分页的对象
    PageInfo<User> pageInfo = new PageInfo<>(user);
    System.out.println(pageInfo);
    System.out.println("查询出来的数据 :"+pageInfo.getList());
    //查询出来的数据 :Page{count=true, pageNum=1, pageSize=3, startRow=0, endRow=3, total=5, pages=2, reasonable=false, pageSizeZero=false}[User(id=1, name=Jone, password=18), User(id=3, name=Tom, password=28), User(id=11, name=1, password=1)]
    System.out.println("数据总条数 :"+pageInfo.getTotal());// 5
    //关闭会话,释放资源
    sqlSession.close();
}

在这里插入图片描述

在 Springboot 中项目实战

1、导入依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
<!-- mysql-connector-java 连接数据库,版本最好和数据库的版本一致 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>
<!--   PageHelper     -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.0</version>
</dependency>

2、在 application.properties 文件中配置连接数据库的信息

#连接驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#配置数据库连接地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useSSL=false
#配置数据库连接用户名
spring.datasource.username=root
#配置数据库连接密码
spring.datasource.password=admin

#配置日志信息
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

3、创建实体

@Data
public class User {
    private int id;
    private String name;
    private String password;
}

4、创建接口

public interface UserMapper {

    @Select("select * from user")
    List<User> getAll();
}

5、编写springboot启动类

@MapperScan("com.hkp.mapper")
@SpringBootApplication
public class PageApplication {
    public static void main(String[] args) {
        SpringApplication.run(PageApplication.class,args);
    }
}

6、编写Controller
注意,这里一切从简了,正常应该还有一层 service ,我这边就省略了

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/")
    public PageInfo<User> getAll(){
        //1、调用PageHelper的startPage方法设置参数,其中page为当前页,size为每页显示条数
        PageHelper.startPage(1,3);
        //2、调用Mapper层查询全部的方法
        List<User> all = userMapper.getAll();
        //3、构造pageInfo返回值
        return new PageInfo(all);
    }

}

启动测试
浏览器输入 localhost:8080
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值