【Java从0到架构师】MyBatis - 连接池、分页_PageHelper

Java 从 0 到架构师目录:【Java从0到架构师】学习记录

集成 druid 连接池

添加 maven 依赖:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.22</version>
</dependency>

新建一个继承 UnpooledDataSourceFactory 的连接池类,在构造方法中设置数据源:

public class DruidDataSourceFactory extends UnpooledDataSourceFactory {
    public DruidDataSourceFactory() {
        this.dataSource = new DruidDataSource();
    }
}

在 environment 标签中配置连接池的类名:

<dataSource type="com.mj.common.DruidDataSourceFactory">
   <property name="driver" value="com.mysql.jdbc.Driver"/>
   <property name="url" value="jdbc:mysql://localhost:3306/xr2"/>
   <property name="username" value="root"/>
   <property name="password" value="root"/>
</dataSource>

可以给数据库连接池配置别名:

<typeAliases>
    <!-- 一旦设置了别名,它是不区分大小写的 -->
    <typeAlias type="com.mj.common.DruidDataSourceFactory" alias="druid" />
</typeAliases>
<!-- 别名不区分大小写 -->
<dataSource type="DRUID">
	<!-- .... -->
</dataSource>

读取外部的配置文件

在这里插入图片描述
在这里插入图片描述
将 druid.properties 放在 resources 下

在 mybatis-config.xml 中读取配置文件:

<properties resource="druid.properties" />

利用 ${} 的语法从 druid.properties 文件中取值:

<dataSource type="com.mj.common.DruidDataSourceFactor">
	<property name="driverClass" value="${dev.driverClass}"/>
	<property name="url" value="${dev.url}"/>
	<property name="username" value="${dev.username}"/>
	<property name="password" value="${dev.password}"/>
	<property name="initialSize" value="${dev.initialSize}"/>
	<property name="maxActive" value="${dev.maxActive}"/>
	<property name="maxWait" value="${dev.maxWait}"/>
</dataSource>

分页查询 - PageHelper

不同数据库的分页查询 SQL 可能是不一样的,比如:每页 10 条数据,查询第 2 页(第 11 ~ 20 条记录)

MySQL 实现:

SELECT * FROM student LIMIT 10, 10;

SQL Server 实现:

SELECT * FROM student
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;

Oracle 实现:

SELECT * FROM
	(
		SELECT s.*, ROWNUM rn
		FROM (SELECT * FROM student) s
		WHERE ROWNUM <= 20
	)
WHERE rn >= 11;

所以,在 MyBatis 中使用不同的数据库,就需要编写不同的分页查询 SQL


PageHelper 是由国人开发的 MyBatis 分页插件

  • 支持多种常用的数据库,可以极大简化分页的业务逻辑

源码:https://github.com/pagehelper/Mybatis-PageHelper

使用方法:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

PageHelper 环境配置

引入 maven 依赖:

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

在 mybatis-config.xml 中配置插件:

注意:mybatis-config.xml 中标签的书写是有顺序的,可以利用先随便写个位置,然后查看报错信息
在这里插入图片描述

<plugins>
	<!-- PageHelper会去拦截MyBatis的SQL, 并重组成分页查询的SQL语句 -->
	<plugin interceptor="com.github.pagehelper.PageInterceptor">
	    <!-- reasonable设置为true代表分页合理化: 
	    		pageNum <= 0 就会自动获取第1页 
				pageNum > pages 就会自动获取最后1页 
		-->
	    <property name="reasonable" value="true"/>
	</plugin>
</plugins>

reasonable 设置为 true:

  • pageNum < = 0 时会查询第一页
  • pageNum > pages(超过总页数时),会查询最后一页

PageHelper 使用方法

<select id="list" resultType="com.mj.bean.Skill">
	SELECT * FROM skill
</select>

Java 代码中设置分页参数,再进行查询:

// 设置分页参数(第2页,每页5条记录)
PageHelper.startPage(2, 5);
// 查询
List<Skill> skills = session.selectList("skill.list");

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌宅鹿同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值