SpringBoot学习笔记(五)SpringBoot与数据访问[JDBC、Druid、Jpa]

超详细讲解SpringBoot——数据访问 前言: 大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有MongoDB,Redis。 用spring开发时我们常用的ORM框架有JDBC、Mybatis,Hibernate,现在最常用的应该是Mybatis。 在Springboot中对于数据访问层,无论是SQL还是NOSQL,都默认采用整合Spring Data的方式进行统一处理,Springboot会帮我们添加大量自动 阅读详情

六、SpringBoot与数据访问

6.1JDBC

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
spring:
  datasource:
    url: jdbc:mysql://124.70.0.204:3306/jdbc?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
    password: *******
    username: root
    driver-class-name: com.mysql.cj.jdbc.Driver

效果:
默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源
数据源的相关配置都在DataSourceProperties里面

6.1.1自动配置原理:

org.springframework.boot.autoconfigure.jdbc
1、参考DataSourceConfiguration,根据配置数据源,默认使用Tomcat连接池;可以使用spring.datasource.type指定自定义的数据源类型;
2、SpringBoot默认可以支持

org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource

3、自定义数据源类型

	@Configuration(proxyBeanMethods = false)
    @ConditionalOnMissingBean({DataSource.class})
    @ConditionalOnProperty(name = {"spring.datasource.type"})
    static class Generic {
        Generic() {}
        @Bean
        DataSource dataSource(DataSourceProperties properties) {
        	//使用DataSourceBuilder创建数据源,利用反射创建响应式type的数据源,并且绑定相关属性
            return properties.initializeDataSourceBuilder().build();
        }
    }

6.2整合Druid数据源

6.2.1引入Druid
<!--引入数据源-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.8</version>
</dependency>
6.2.2配置文件引入
   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,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#    schema:
#      - classpath:department.sql
6.2.3DruidConfig.class
@Configuration
public class DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }

    //配置Druid的监控
    //1、配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        //处理druid下的所有请求
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        HashMap<Object, Object> initParams = new HashMap<>();
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认就是允许所有访问
        initParams.put("deny","192.169.141.1");//本机ip
        bean.setInitParameters(initParams);
        return bean;
    }

    //2、配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initParams);
        //拦截所有请求
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;
    }
}
6.2.4遇到的问题

启动时候,报一下错误
在这里插入图片描述
根据报错提示在配置文件的24行,查看配置文件,该行代码是 filters: stat,wall,log4j

看报错原因Reason: org.apache.log4j.Logger,于是猜想少了log4j的相关依赖,在pom中引入相关依赖

<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

启动后成功

6.2.5访问http://localhost:8087/druid

在这里插入图片描述
输入配置好的用户名、密码
在这里插入图片描述
此时sql监控空空如也,web应用请求次数为0
此时访问一个查询接口
在这里插入图片描述
在回到druid页面,查看sql监控
在这里插入图片描述
web应用
在这里插入图片描述

6.3整合MyBatis

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.2.0</version>
</dependency>

在这里插入图片描述

6.3.1步骤

1)、配置数据源相关属性(见上一节Druid)
2)、给数据库建表
在这里插入图片描述
3)、创建javaBean

4)、注解版
//指定这是一个操作数据库的mapper
@Mapper
public interface DepartmentMapper {

    @Select("select * from department where id = #{id}")
    public Department getDeptById(Integer id);

    @Delete("delete from department where id=#{id}")
    public int deleteDeptById(Integer id);

    @Options(useGeneratedKeys = true,keyProperty = "id")
    @Insert("insert into department(departmentName) value(#{departmentName})")
    public int insertDept(Department department);

    @Update("update department set departmentName=#{departmentName} where id=#{id}")
    public int updateDept(Department department);
}

在这里插入图片描述

5)、自定义配置规则、批量扫描接口

在这里插入图片描述

6)、配置文件版

yml中:

mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml 指定全局配置文件的位置
  config-location: classpath:mybatis/mybatis-config.xml 指定sql映射文件的位置

EmployeeMapper.java中

public interface EmployeeMapper {

    public Employee getEmpById(Integer id);

    public void insertEmp(Employee employee);
}

EmployeeMapper.xml中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sguigu.springboot06.mapper.EmployeeMapper">

    <select id="getEmpById" resultType="com.sguigu.springboot06.bean.Employee">
        SELECT * FROM employee WHERE id = #{id}
    </select>

    <insert id="insertEmp">
        INSERT INTO employee(lastName,email,gender,d_id) VALUES (#{lastName},#{email},#{gender},#{dId})
    </insert>

</mapper>

接口

	@GetMapping("/emp/{id}")
    public Employee getEmp(@PathVariable("id") Integer id){
        return employeeMapper.getEmpById(id);
    }

6.3、整合SpringData JPA

6.3.1简介

统一API对数据访问层进行操作
在这里插入图片描述

6.3.2整合SpringData JPA

JPA:ORM(Object Relational MApping);
1)、编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;

//使用JPA注解配置映射关系
@Entity//告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "tb1_user")//指定和哪个表对应;如果省略默认表名就是user
@Data
public class User {

    @Id//这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
    private Integer id;

    @Column(name = "last_name",length = 50)//这是和数据表对应的一个列
    private String lastName;

    @Column//省略默认列名就是属性名
    private String email;
}

2)、编写一个Dao接口来操作实体类对应的数据表(Repository)

//继承JpaRepository来完成对数据库的操作
public interface userRepository extends JpaRepository<User,Integer> {
}

3)、基本的配置

spring
  jpa:
    hibernate:
#     更新或者创建数据表
      ddl-auto: update
#   控制台显示sql
    show-sql: true

4)、Controller
在这里插入图片描述

Sharding-JDBC 分库分表实战 springboot+sharding-jdbc+jpa+druid 分库分表前言 阅读详情

相关推荐

Springboot中使用Druid+JPA

Springboot中使用Druid+JPA,列举了在Springboot中如何搭配使用Druid+JPA操作数据库。

springboot整合jpa以及druid

1、关于druid DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池) 2、添加druid、jpa依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid&

f335830104的博客 1126

SpringBoot+ Swagger+Druid+SpringData-jpa

四个整合到一起的测试代码,使用了mysql数据库,IDEA创建项目,.idea未删除,用Idea打开时请先删除.idea文件夹,用eclipse打开时请转化为Maven项目。

SpringBoot重点详解--使用Druid+Jpa

目录 Druid 简介 添加依赖与配置 配置数据源 配置Druid监控统计功能 方式一(基于Servlet 3.0 注解的配置) 方式二(基于Spring注解的配置) 配置JPA 应用测试 Druid 简介 Druid是阿里巴巴开源的数据库连接池,号称是Java语言中最好的数据库连接池,能够提供强大的监控和扩展功能。GitHub地址:https://github.com/al...

pengjunlee的博客 7万+

springboot+druid+jpa(hibernate)+mysql项目案例

这案例是spring boot+druid+jpa(hibernate)+mysql搭建的maven结构的基础案例

搭建基于Springboot2.0,Druid 1.1,Jpa demo

这是一个基于Spring 2.0,基于Mysql8.0,Springboot2.0,Druid 1.1,Jpa demo搭建的,本资源对应的博客链接https://blog.youkuaiyun.com/qq_37925580/article/details/88398066

SpringBoot使用Druid+Jpa(转载)

Druid 简介 Druid是阿里巴巴开源的数据库连接池,号称是Java语言中最好的数据库连接池,能够提供强大的监控和扩展功能。GitHub地址:https://github.com/alibaba/druid。 Druid有以下优点: 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 替换DB...

qq_40342015的博客 890

Python的WNTR库---基于供水网络

WNTR使用小结(一) 本人最近主要再做设施网络的内容,主要聚焦供水管网(water distribution network,WDN),在做实验中主要用的包为WNTR,下载连接: 链接: WNTR.最好安装最新版本 如果有做这方面研究的小伙伴们需要测试数据可以直接从WNTR实例数据中下载,其中提供了四种规模大小的管网,格式为.inp,可以搭配Epanet使用。如果需要更多示例数据可私信我! 以下内容全部为本人自己探索的小心得,希望能给你带来一点点帮助,如果不够详尽可以自行参阅官方文档:链接: 官方文档.

pushhy的博客 4934

SpringBoot + Druid+ JPA 多数据源配置

说明:以自定义注解切面方式(方法级),指定调用的数据源。 一、引入 druid 包 <!-- druid数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency

Ych的博客 1774

深入浅出:UE4类型系统完整构建过程详解

UE4的类型系统是一个复杂但设计精巧的架构,它通过静态代码生成和运行时构建的完美配合,实现了强大的反射功能。理解这个过程不仅有助于解决开发中的问题,也能让你更好地利用UE4的各种高级特性。就像建造一栋大楼需要经过设计、备料、框架、装修、验收等多个阶段,UE4类型系统的构建也是一个多阶段、精细化的过程。每个阶段都有其特定的职责,共同协作完成从源代码到运行时对象的转换。

m0_45371381的博客 911

若依(RuoYi)项目里,Quartz定时任务踩坑实录:并发控制、事务回滚与异常处理

本文深入解析若依(RuoYi)项目中Quartz定时任务的并发控制、事务回滚与异常处理三大核心问题。通过实战案例揭示@DisallowConcurrentExecution注解的局限性和Redis分布式锁的应用,详细讲解Spring事务集成方案及多数据源事务管理,并提供生产级监控体系搭建指南,帮助开发者规避Quartz在生产环境中的常见陷阱。

weixin_28731223的博客 408

Jpa与Druid线程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑异常处理方案

(1)Spring Boot JPA时,open-in-view 选项默认为true。启动时在日志中会出现警告 (2)JPA出现异常java.lang.IllegalArgumentException: Not a managed type: class xx (3)JPA多数据源注入,事务失效|解决方案

天涯芳草 1026

【NLP】第十章:位置编码Positional Encoding

前面讲RNN时一般都会有一个ht的输出,这个输出就是样本与样本之间的信息,而且RNN是时序循环的,所以RNN本身的结构,在物理上,就自带词的前后顺序信息的。比如词never,不管never本身的词向量是什么,只要你在序列中排第一个位置,你的位置向量就是[0,1,01],你排第三个位置,你的位置向量就是[0.9,-0,4,0.2,1.0]。也所以,你可以理解为:embedding后的词嵌入,PE按照每个样本在sequence中的位置,把embedding后的词嵌入给扭转后,才送入attention的。

因为热爱所以坚持 1918

详细SpringBoot教程之数据访问

写在前面 鉴于有人留言说想要学习SpringBoot相关的知识,我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的博文初步都定下来包括SpringBoot介绍、入门、配置、日志相关、web开发、数据访问、结合docker、缓存、消息队列、检索、任务安全、分布式等等一系列的博文,工作量很大,是个漫长的过程,每一步我...

BoCong-Deng的博客 1万+

北斗导航 | 接收机自主完好性监测(RAIM)算法近三年研究现状总结(2022-2025)

近三年RAIM算法已从传统的单故障检测演进为多星座协同、智能融合的复杂系统,在航空、自动驾驶等安全关键领域实现规模化应用。未来需重点突破城市复杂环境适应性和标准化体系建设,推动技术从"可用"向"可信"跨越。

尘世冰封的专栏 439

基于YOLOv26的道路抛洒物检测系统原理实现

本文提出了一种基于YOLOv26的道路抛洒物智能检测系统,通过深度学习技术实现道路抛洒物的实时检测与分类。系统采用分层架构设计,包含视频采集、目标检测、分类评估和预警处理等模块,能够自动识别轮胎碎片、货物包装、金属零件等多种抛洒物,并根据危险程度分级预警。YOLOv26算法在检测精度和速度上的优势使其特别适合道路监控场景,结合背景建模和运动目标提取技术,有效提高了复杂道路环境下抛洒物的识别率。该系统可集成到现有智能交通监控平台,为道路安全管理提供实时决策支持。

一键难忘的博客 1253

SpringBoot与数据访问(访问SQL,NOSQL)JDBC,Mybatis,JPA(Druid连接池 )

目录SpringBoot数据访问层SpringBoot使用JDBC进行数据访问SpringBoot使用JDBC默认使用tomcat.pool的数据源连接池,一般开发不使用,使用Druid数据源连接池==使用Druid数据源连接池(数据源监控)==使用Druid数据源连接池步骤配置Druid的监控 SpringBoot数据访问层 SpringBoot使用JDBC进行数据访问 SpringBoot使...

weixin_44142032的博客 938

openclaw 保姆级部署与核心玩法解析:国产DeepSeek模型 + 飞书

OpenClaw是一款功能强大的开源AI个人助理,支持全平台私有化部署,数据完全本地掌控。它不仅可通过聊天窗口直接操控电脑(安装软件、创建项目),还支持接入飞书等主流通讯工具,化身24小时在线的智能助理。本文提供了从零开始的详细部署教程,涵盖基础安装、模型配置(如GLM-4、DeepSeek)到飞书集成的完整实战指南,助你将这款“核动力”AI助手快速融入日常工作流。

甘蓝的专栏 2999

Spring Boot 整合 Druid-MyBatis-SpringData JPA

Spring Boot源码版本为2.2.6 0x01.Spring Boot与JDBC Spring Boot默认对jdbc进行了相关的自动配置。 要想使用Spring Boot中与数据访问相关的服务,可以选择这几个依赖。 1.Spring Boot对JDBC的自动配置: 我们通过一个简单的例子来看一下Spring Boot对JDBC做了哪些自动配置。 第一步:在配置文件中进行相关的...

ATFWUS的博客 1万+

华为OD机试双机位C卷-水库溃坝填补(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【水库溃坝填补】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。水库溃坝填补。

qq_45776114的博客 2109

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

springboot数据库连接-jdbc,druid,mybatis,JPA

这里写自定义目录标题JDBC新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 JDBC spring: datasource: # 数据源基本配置 username: root passwor

cuiiiiiiiiii的博客 272

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【SpringBoot】:SpringBoot整合JDBC/Druid/MyBatis/JPA

文章目录一、SpringBoot整合JDBC1、查看SpringBoot的默认数据源2、自动建sql语句表3、使用JdbcTemplate查表二、SpringBoot整合Druid数据源1. 引入Druid数据源的依赖2. 在配置文件中切换数据源并配置与数据源相关的属性3. 编写配置类4. 以debug方式测试配置的数据源属性是否成功5. 配置Druid的监控三、SpringBoot整合MyBatis1. 配置Druid数据源2. 配置启动时初始化的建表脚本3. 创建JavaBean封装表的属性4. MyB

JH灰色的博客 463

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot-9:SpringBoot与数据访问_JDBC_Druid_MyBatis_JPA

文章目录一、SpringBoot整合基本JDBC1、查看SpringBoot的默认数据源2、自动建表3、使用JdbcTemplate查表二、SpringBoot整合Druid数据源1. 引入Druid数据源的依赖2. 在配置文件中切换数据源并配置与数据源相关的属性3. 编写配置类4. 以debug方式测试配置的数据源属性是否成功5. 配置Druid的监控三、SpringBoot整合MyBatis1...

你今天真好看呀 460

【SpringBoot】整合 - JDBC、Mybatis、JPA

文章目录10.1 整合JDBC10.2 整合Mybatis注解版踩坑xml版10.3 整合SpringData-JPA 10.1 整合JDBC 10.2 整合Mybatis <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId&

Java 1148

SpringBoot原理分析 | Spring Data整合:JDBC、Druid、Mybatis

SpringBoot原理分析 | Spring Data整合:JDBC、Druid、Mybatis

wei_shuo的博客 2684

SpringBoot——与数据库连接(JDBC,Druid,MyBatis,Spring Data JPA)

1.与JDBC连接 1.1连接步骤 1.依赖(pom.xml) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <g

努力找工作呀 1234
上一篇: 快速获取到微信小程序源码(反编译)
下一篇: 阿里云存储OSS使用及文件上传【示例:头像上传】
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

智汇风渔AI小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值