SpringBoot集成Mybatis+druid+pagehelper
1. 前言
最近一直在上班,因为刚毕业,对工作慢慢的也适应了,之后会定期更新帖子。在上班期间用的都是SpringBoot,所以近来会给大家整理一些实用的教程,帮助刚开始接触SpringBoot的小伙伴能更快的使用这个语言。在本教程中出现的任何问题,大家可以在最下方进行反馈,那么我们就开始今天的学习吧!
2. 创建项目
1、打开IDEA单击createNewProject创建新项目,然后点右下角NEXT
2、写好信息,然后NEXT
3、选择Web模块,点NEXT
4、点Finsh即可
5、自动导入依赖
6、项目目录结构如下
3. 引入jar包
直接给大家上干货,pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dzj</groupId>
<artifactId>springbootexercise</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootexercise</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!--Mybatis 分页插件 pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!-- mysql 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 事务支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4. 编写配置文件
在src/resource目录下创建application.yml文件,引入以下配置
server:
#端口配置
port: 8086
##mybatis配置
mybatis:
configuration:
#开启MyBatis的二级缓存
cache-enabled: true
#Mapper.xml所在的位置
mapper-locations: classpath*:mybatis/**/*Mapper.xml
#entity扫描的包名
type-aliases-package: com.example
pagehelper:
helperDialect: mysql
params: count=countSql
reasonable: true
supportMethodsArguments: true
spring:
#数据源配置
datasource:
#druid
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/directory?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: root
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
#检测连接是否有效的sql
validation-query: SELECT 'x'
validation-query-timeout: 60000
test-while-idle: true
test-on-borrow: false
test-on-return: false
# PSCache Mysql下建议关闭
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: -1
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
web-stat-filter:
#启动项目后访问 http://127.0.0.1:8080/druid
#是否启用StatFilter默认值true
enabled: true
url-pattern: /*
exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
#缺省sessionStatMaxCount是1000个
session-stat-max-count: 1000
#关闭session统计功能
session-stat-enable: false
#配置principalSessionName,使得druid能够知道当前的session的用户是谁
#如果你session中保存的是非string类型的对象,需要重载toString方法
principalSessionName: xxx.user
#如果user信息保存在cookie中,你可以配置principalCookieName,使得druid知道当前的user是谁
principalCookieName: xxx.user
#druid 0.2.7版本开始支持profile,配置profileEnable能够监控单个url调用的sql列表。
profile-enable: false
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
stat-view-servlet:
#启动项目后访问 http://127.0.0.1:8080/druid
#是否启用StatViewServlet默认值true
urlPattern: /druid/*
enabled: true
#禁用HTML页面上的“Reset All”功能
resetEnable: false
#用户名
loginUsername: admin
#密码
loginPassword: admin
#IP白名单(没有配置或者为空,则允许所有访问)
allow: 127.0.0.1,192.168.1.11
#IP黑名单 (存在共同时,deny优先于allow)
deny: 192.168.1.73
复制完后的小伙伴们,一定要注意以下几点:
- jdbc的值换成自己的。
- mapper-locations里面根据你mapper.xml文件的根路径来修改
- type-aliases-package配置到启动类的路径即可`
- mybatis所配置的实体类别名和mapper配置文件所在的地方改成自己的
- 如果你要用druid监控的话,那么你的访问IP一定要在IP白名单中
5. 启动类
package com.example.springbootdemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
//此处必须加入MapperScan注解,前面根据自己项目来更改即可
@MapperScan("com.example.springbootdemo.**.mapper")
public class SpringbootdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
6. 运行项目
运行图
7. 访问durid监控
地址栏
页面图片
登陆后
8.使用pagehelper分页插件
前端请求
参数说明:
page:代表当前第几页
limit:显示10条数据
后端代码(controller)
//1、从前端请求域中获取page和limit
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = Objects.requireNonNull(servletRequestAttributes, "获取request失败").getRequest();
int page = Integer.parseInt(request.getParameter("page"));
int limit = Integer.parseInt(request.getParameter("limit"));
//2、执行分页方法,将两个参数传进去
Page<Demo> pages = PageHelper.startPage(page, limit);
//3、得到分页后的集合
List<Demo> resultList = pages.getResult();
//4、得到查询的总数
long count = pages.getTotal();
通过以上代码可以查到数据的总数和分页后的数据,最后将数据返回给前端的数据表格即可,每个数据表格返回的格式都不太一样哦。具体就不体现了(好吧,是太菜了,怕被喷)
9. 尾声
那么今天我们的学习就到这里了,下一期我们学习Springboot集成日志,并且可以把日志打印在控制台上,小伙伴们拜拜~