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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 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的整合步骤基本都一致,引入依赖、配置文件、调用。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
7月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
330 0
|
4月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
660 1
Spring boot 使用mybatis generator 自动生成代码插件
|
4月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
172 1
|
7月前
|
Java 数据库连接
【YashanDB知识库】Springboot启动找不到崖山jdbc驱动的问题处理
本文来自YashanDB官网,主要解决SpringBoot应用启动时出现“找不到崖山JDBC驱动”的问题,尽管lib目录下已有yashandb-jdbc-1.6.9.jar文件。错误信息显示`java.lang.ClassNotFoundException: com.yashandb.jdbc.Driver`。解决方案为:通过`which java`等命令定位Java安装路径,将驱动jar包复制到JRE的`lib/ext`目录下,最后重启应用即可。
|
7月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
571 0
|
7月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
904 0
|
7月前
|
SQL Java 数据库连接
【YashanDB数据库】由于网络带宽不足导致的jdbc向yashandb插入数据慢
由于网络带宽不足导致的jdbc向yashandb插入数据慢
|
9月前
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
782 7
|
9月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
883 6
|
9月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
338 2

热门文章

最新文章