SpringBoot整合jdbc、durid、mybatis详解,数据库的连接就是这么简单

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: SpringBoot底层统一采用SpringData处理数据库,这一章主要来讲一下SpringBoot整合jdbc、durid、mybatis的方式。

SpringBoot底层统一采用SpringData处理数据库,这一章主要来讲一下SpringBoot整合jdbc、durid、mybatis的方式。


(一)整合jdbc


整合jdbc主要有三步: 1.引入依赖 2.配置数据源 3.访问 引入springdata启动器和mysql连接包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

在application.yaml或者application.properties中配置spring datasource数据源。在新版本的spring-boot-starter-jdbc,mysql驱动由原先的com.mysql.jdbc.Driver变为了com.mysql.cj.jdbc.Driver


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testsql?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

通过jdbc模板访问

@RestControllerpublicclassJdbcController {
@AutowiredprivateJdbcTemplatejdbcTemplate;
@GetMapping("/jdbc")
publicList<Map<String, Object>>query(){
Stringsql="select * from user";
List<Map<String, Object>>maps=jdbcTemplate.queryForList(sql);
returnmaps;
    }
}

(二)整合druid


druid是阿里巴巴公司开发的数据库连接池,它的官网称Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 druid的使用首先也是引入依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.23</version>
</dependency>

com.alibaba.druid.pool.DruidDataSource 基本配置参数如下:

网络异常,图片无法展示
|
网络异常,图片无法展示
|


Spring Boot 2.0 以上默认使用 com.zaxxer.hikari.HikariDataSource 数据源,但可以通过 spring.datasource.type 指定数据源。我们将type修改为druid。


设置完数据源后,就可以设置数据源连接初始化大小、最大连接数、等待时间、最小连接数 等设置项


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/myssh?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #连接池属性
    #Spring Boot 默认是不注入这些属性值的,需要自己绑定
    #druid 数据源专有配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
    #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
    #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

因为在配置文件中使用了log4j,因此我们也需要引入log4j的依赖。


最后编写配置类,ConfigurationProperties注解大家都很熟悉了,从配置文件的spring.datasource下读取配置。statViewServlet方法配置后台监控功能,主要设置ip黑白名单,用户名密码等。statFilter用于配置过滤器等消息。


@ConfigurationpublicclassDruidConfig {
@ConfigurationProperties("spring.datasource")
@BeanpublicDataSourcedruidDataSource(){
returnnewDruidDataSource();
    }
//后台监控//因为SpringBoot内置了servlet容器,所以没有web.xml,替代方法:ServletRegisterationBean@BeanpublicServletRegistrationBeanstatViewServlet(){
//创建servlet注册实体ServletRegistrationBeanservletRegistrationBean=newServletRegistrationBean(newStatViewServlet(),"/druid/*");
//设置ip白名单servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//设置ip黑名单,如果allow与deny共同存在时,deny优先于allowservletRegistrationBean.addInitParameter("deny","192.168.0.19");
//设置控制台管理用户servletRegistrationBean.addInitParameter("loginUsername","druid");
servletRegistrationBean.addInitParameter("loginPassword","123456");
//是否可以重置数据servletRegistrationBean.addInitParameter("resetEnable","false");
returnservletRegistrationBean;
    }
@BeanpublicFilterRegistrationBeanstatFilter(){
//创建过滤器FilterRegistrationBeanfilterRegistrationBean=newFilterRegistrationBean(newWebStatFilter());
//设置过滤器过滤路径filterRegistrationBean.addUrlPatterns("/*");
//忽略过滤的形式filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
returnfilterRegistrationBean;
    }
}

最后输入


https://link.juejin.cn/?target=http%3A%2F%2Flocalhost%3A8080%2Fdruid%2Flogin.html%25E8%25BF%259B%25E5%2585%25A5%25E7%2599%25BB%25E9%2599%2586%25E9%25A1%25B5%25E9%259D%25A2

网络异常,图片无法展示
|


druid所提供的强大功能。关于druid更多的内容可以从


https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Falibaba%2Fdruid%25E8%258E%25B7%25E5%258F%2596


网络异常,图片无法展示
|


网络异常,图片无法展示
|


(三)整合Mybatis


在项目中基本上不会使用jdbc直接连接数据库,对数据库的操作往往会通过一些持久层的框架,下面来讲讲Mybatis的整合,Mybatis的整合分为以下几步:


1.导入包


2.配置文件


3.mybatis配置


4.编写sql


5.调用


整合包 mybatis-spring-boot-starter


<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>

配置mybatis,这里主要配置了type-aliases-package和mapper-locations

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/myssh?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  type-aliases-package: com.javayz.springbootdemo.pojo
  mapper-locations: classpath:mybatis/mapper/*.xml

编写Mapper接口,到这里都属于Mybatis的基础操作,就不做介绍了

@Mapper@RepositorypublicinterfaceUserSelectMapper {
List<User>queryUserList();
}

mapper.xml配置文件编写sql语句

<?xmlversion="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.javayz.springbootdemo.mapper.UserSelectMapper"><selectid="queryUserList"resultType="User">        select * from user
</select></mapper>

(四)总结


在这篇文章中我主要介绍了SpringBoot中jdbc、durid、mybatis的整合,SpringBoot的整合步骤基本都一致,引入依赖、配置文件、调用。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
47 4
SpringBoot入门(4) - 添加内存数据库H2
|
1月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
151 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
13天前
|
Java 数据库连接 数据库
spring和Mybatis的逆向工程
通过本文的介绍,我们了解了如何使用Spring和MyBatis进行逆向工程,包括环境配置、MyBatis Generator配置、Spring和MyBatis整合以及业务逻辑的编写。逆向工程极大地提高了开发效率,减少了重复劳动,保证了代码的一致性和可维护性。希望这篇文章能帮助你在项目中高效地使用Spring和MyBatis。
9 1
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
33 2
SpringBoot入门(4) - 添加内存数据库H2
|
1月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
66 13
|
26天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
38 4
|
28天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
17 0
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
126 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
Java 关系型数据库 MySQL
mysql5.7 jdbc驱动
遵循上述步骤,即可在Java项目中高效地集成MySQL 5.7 JDBC驱动,实现数据库的访问与管理。
276 1
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
94 0