SpringBoot之JDBC和Druid

分库分表之Sharding-JDBC 目录 1、Sharding-JDBC概述 2、架构回顾 3、SpringBoot集成Sharding-JDBC 3.1 准备工作 3.2 配置MySQL主从复制 3.3 引入依赖坐标 3.4 application.properties配置 3.5 启动类,pojo service,dao,test 3.6 一些需要补充的概念 4、Sharding-JDBC原理 5、分库分表带来的问题 5.1 垂直分库带来的问题和解决思路 5.2 水平分库带来的问题和解决思路 5.3 我们. 阅读详情

首先使用IDEA的Spring Initializr创建工程,添加Web、MySQL、JDBC模块

另外在pom.xml文件中导入Druid依赖:

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

配置application.yml配置文件:

spring:
  datasource:
    username: root
    password: Root!!2018
    url: jdbc:mysql://192.168.3.18/jdbc?autoReconnect=true&useSSL=false
    driver-class-name: com.mysql.jdbc.Driver

在测试类中进行测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootWebJdbcDruidApplicationTests {

    @Autowired
    private DataSource dataSource;

    @Test
    public void contextLoads() throws SQLException {

        System.out.println(dataSource.getClass());

        Connection connection = dataSource.getConnection();

        System.out.println(connection);

        connection.close();
    }
}

控制台输出结果:

class com.zaxxer.hikari.HikariDataSource
HikariProxyConnection@1183572822 wrapping com.mysql.jdbc.JDBC4Connection@5c9ac4cc

结论:连接成功,默认使用的数据源是HikariDataSource

使用SpringBoot自动配置好的JdbcTemplate:

@Controller
public class DepartmentController {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/departmentList")
    @ResponseBody
    public List<Map<String, Object>> getDepartmentList(){

        List<Map<String, Object>> mapList = jdbcTemplate.queryForList("select * from department");

        return mapList;
    }
}

访问结果:
这里写图片描述

使用Druid数据源

application.yml

spring:
  datasource:
    username: root
    password: Root!!2018
    url: jdbc:mysql://192.168.3.18/jdbc?autoReconnect=true&useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #   数据源其他配置
    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

在测试类中启动调试,查看DataSource
可以看到DataSource已经替换成Druid,但是有个问题:
这里写图片描述
原因:

@ConfigurationProperties(
    prefix = "spring.datasource"
)
public class DataSourceProperties implements BeanClassLoaderAware, InitializingBean {
    private ClassLoader classLoader;
    private String name;
    private boolean generateUniqueName;
    private Class<? extends DataSource> type;
    private String driverClassName;
    private String url;
    private String username;
    private String password;
    private String jndiName;
    private DataSourceInitializationMode initializationMode;
    private String platform;
    private List<String> schema;
    private String schemaUsername;
    private String schemaPassword;
    private List<String> data;
    private String dataUsername;
    private String dataPassword;
    private boolean continueOnError;
    private String separator;
    private Charset sqlScriptEncoding;
    private EmbeddedDatabaseConnection embeddedDatabaseConnection;
    private DataSourceProperties.Xa xa;
    private String uniqueName;

配置文件的属性是与配置类绑定的,虽然配置文件有DruidDataSource的属性,但是SpringBoot自带的DataSource配置类没有相应的属性和方法,导致部分属性无法绑定,所以我们需要自定义Druid的数据源属性类

解决:往容器里加入自己的配置类,记得与相应属性(spring.datasource)绑定

@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }
}

调试结果:
这里写图片描述

Druid监控

修改application.yml

spring:
  datasource:
    username: root
    password: Root!!2018
    url: jdbc:mysql://192.168.3.18/jdbc?autoReconnect=true&useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #   数据源其他配置
    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,logback
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

修改DruidConfig

@Configuration
public class DruidConfig {

    // 与属性文件里的属性绑定
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }

    // 配置Druid的监控
    // 1、配置一个管理后台的servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){

        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

        // 设置初始化参数,参数详情查看StatViewServlet
        Map<String, String> initParams = new HashMap<>();
        initParams.put("loginUsername", "admin");
        initParams.put("loginPassword", "123456");
        initParams.put("allow", "");  // 默认允许所有访问
        //initParams.put("deny", "192.168.3.9");  // 拒绝访问

        bean.setInitParameters(initParams);

        return bean;
    }

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

        // 设置初始化参数,参数详情查看WebStatFilter
        Map<String, String> initParams = new HashMap<>();
        initParams.put("exclusions", "*.js, *.css, /druid/*");
        bean.setInitParameters(initParams);
        // 设置拦截路径
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;
    }
}

访问:

http://localhost:8080/druid/login.html

这里写图片描述
使用配置类里配置的账号密码登录即可。

SpringBoot整合JDBC+Druid 1、导入依赖 //springboot-web模块 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; //JDBC &... 阅读详情

相关推荐

SpringBoot集成jdbc和Druid

1、springData 1、对于数据访问层,不论是SQL,NoSQL,在SpringBoot底层都是采用SprinData来进行封装的。 2、创建springBoot项目,选择Sping Data JDBC和MySQL Driver 2、集成JDBC 1、创建数据库 CREATE DATABASE /*!32312 IF NOT EXISTS*/`springboot` /*!40100 DE...

qq_40765573的博客 468

ShardingJDBC

定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC;支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, HikariCP 等;支持任意实现 JDBC 规范的

worn_xiao的博客 1万+

手把手教你用Cursor + 自定义MCP工具链,让AI帮你搞定App逆向(附adb-mcp/frida-mcp源码)

本文详细介绍了如何利用Cursor IDE与自定义MCP工具链构建AI驱动的App逆向工作流,涵盖adb-mcp和frida-mcp的源码实现与实战应用。通过自然语言指令,AI可自动化完成设备控制、动态Hook和数据分析,显著提升移动安全测试效率。适合安全研究人员和开发者快速掌握智能逆向技术。

weixin_33737134的博客 1300

Sharding-JDBC

数据库优化的几个阶段 数据库优化的几个阶段请参考: https://www.songma.com/news/txtlist_i21939v.html 分库分表适用场景 分库分表主要用于应对当前互联网常见的两个场景——大数据量和高并发。 1.数据量大时,减少单表查询压力 2.减少单表的访问压力 3.单表数据量上百万至千万,索引性能下降 4.索引也很难在提高性能或者更新、插入数据频繁等。 Shardi...

sinat_34814635的博客 3万+

Frida Stalker实战:如何用指令级追踪破解OLLVM混淆的AES算法

本文深入探讨了如何使用Frida Stalker进行指令级追踪,破解经过OLLVM混淆的AES算法。通过动态分析技术,逆向工程师可以精准识别控制流平坦化等混淆手段,还原算法逻辑,特别适用于移动安全领域的加密算法分析。文章提供了详细的配置指南、核心机制解析和实战案例,帮助读者掌握对抗高级代码混淆的有效方法。

weixin_29325955的博客 475

LabVIEW多界面应用开发:从启动器到主界面的切换架构与实现

在图形化编程领域,模块化与界面管理是构建复杂应用程序的核心。其原理在于通过清晰的程序架构,实现不同功能模块间的独立运行与协同工作,从而提升代码的可维护性和可扩展性。这种架构的技术价值在于能够有效管理应用程序的生命周期与资源,避免内存泄漏,并确保流畅的用户体验。在测控系统、自动化测试等工程实践中,常需实现如启动界面选择语言或模式后,无缝切换至主功能界面的场景。本文聚焦于LabVIEW环境,深入探讨如何利用动态调用、状态机等机制,并结合功能全局变量(FGV)与队列消息处理器(QMH)等热词技术,构建健壮的多界面

weixin_30802819的博客 262

shardingsphere的学习(二):sharingjdbc操作读写分离

mysql配置读写分离以及使用shardingjdbc配置操作读写分离。

weixin_45037073的博客 1216

PDF.js实现分片加载问题

PDF.js实现分片加载问题。

qq_32822693的博客 4977

ShardingJDBC分库实践

ShardingJDBC分库实践

Er_vel的博客 1381

深度解析:C# Modbus TCP协议解析与异常处理(工控上位机必备)

协议解析要精准:掌握MBAP头和PDU的结构,尤其是常用功能码的请求/响应格式,避免因字节处理错误导致通信失败;异常处理要全面:覆盖通信层、协议层、数据层的所有异常类型,针对工业场景制定重试、重连、滤波等策略;资源管理要规范:使用释放资源,采用连接池复用连接,避免端口泄露;工业场景要适配:结合工控现场的特点(网络波动、电磁干扰、设备忙),优化通信效率和数据处理逻辑。通过以上解析和策略,可确保C#上位机与工业设备的Modbus TCP通信具备高稳定性、高可靠性、高容错性,满足工控领域的严苛要求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 997

实战干货|.NET9 C#上位机:多PLC并发通信+数据防丢+指令精准下发(10台设备实测+踩坑实录)

摘要:本文介绍了一个基于.NET9重构汽车零部件产线10台西门子S7-1200 PLC并发通信的工业级解决方案。针对原有系统存在的同步轮询阻塞、数据丢失、指令重复等问题,采用连接池复用、异步并发控制、超时隔离等技术,实现800ms内完成10台PLC并发采集、零丢包率、100%指令精准下发。方案通过.NET9的ThreadPool调度优化和ValueTask内存管理,将CPU占用控制在15%以内,解决了多PLC通信中的并发冲突、超时扩散等核心痛点,并提供了可直接复用的工业级代码实现。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 452

SpringBoot整合JDBC、整合Druid数据源详解教程

目录一、整合JDBC1. 环境准备1. 创建数据库2. 创建SpringBoot项目3. IDEA连接数据库2. 编写数据库配置信息3. 编写测试类测试4. CRUD操作数据库1. JDBCTemplate简介2. CRUD测试二、整合Druid数据源1. Druid简介2. 部分基本配置参数3. 使用Durid数据源1. 导入依赖2. 切换数据源3. 设置数据源属性4. 使添加属性生效5. 配置Druid后台监控Servlet6. 配置Druid监控过滤器filter 一、整合JDBC 1. 环境准备.

欢迎来到 Baret-H 的博客 5607

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1756

SpringBoot整合JDBC、Druid

SpringBoot整合JDBC、Druid 对于数据访问层,无论是SQL(关系型数据库)还NOSQL(非关系型数据库),SpringBoot底层采用的事SpringData的方式进行统一处理。SpringData在spring全家桶中也是和SpringBoot、SpringCloud等齐名的项目。 springboot整合数据库的话,需要的启动器jar包如下,都是和data有关的 1、SpringBoot整合JDBC 1.1、知识补充:数据源和数据库连接池 Java中的数据源就是java

q66562636的博客 1198

Allegro172版本多人协同在线设计操作指导

首先用户需要在同一个局域网下,并且Allegro172的版本必须一致,比如都是S082的版本。另外一个用户同样打开相同版本的172,选择Symphony Team design。Allegro升级到172版本,可以支持多人协同设计,并且实时同步,具体操作如下。协同模式下,不能直接保存文件,需要另存版本,注意时常保存文件,以免丢失数据。第一个用户打开PCB,选择Symphony Team design。等待一会出现如下窗口,表示已经共享成功了,并且记下IP地址。出现一个窗口,输出开共享用户的IP地址。

weixin_54787054的博客 4952

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

springboot整合JDBC+Druid

第一步:创建springboot项目 创建springboot项目时勾选如图所示依赖。 第二步:配置连接 这里使用的是ymal配置文件。 配置代码: spring: datasource: username: root password: '000000' url: jdbc:mysql://127.0.0.1:3306/testjdbc?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8

weixin_43919497的博客 571

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SpringBoot集成JDBC和Druid

1. SpringBoot集成JDBC 1.1 创建springboot的项目 1.2 引入jdbc的jar包 <!-- jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId>

qq_42570364的博客 1400

IEM模型,地表粗糙度模拟

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot整合JDBC以及DRUID

Springboot整合jdbc: 步骤一:导入jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId&.

dingtianliang的专栏 153

SpringBoot简单实现JDBC及Druid

文章目录一、SpringBoot-JDBC二、Druid 一、SpringBoot-JDBC 简单的用springboot实现一下jdbc 这里我加了jdbc依赖及web依赖 <!-- JDBC--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

YuMi的博客 491

springboot 整合JDBC、Druid

1、SpringData简介 (1)在springboot框架中,数据访问层,无论是SQL还是NOSQL ,springBoot底层使用的是springdata的方式处理的 (2) SpringData 官网:Spring Data 2、Springboot 整合JDBC 2.1创建测试数据 使用步骤: ​ 1.创建一个springboot项目(springboot-data-jdbc) ​ 1.1.1 创建项目的时候导入了 <!--springboot 整合JDBC--&gt

Tiny~JJ的博客 473

SpringBoot学习(四)-整合JDBC、Druid、MyBatis

SpringBoot整合JDBC、Druid、MyBatis开发和理解。

小孔靠得住的博客 1701

【SpringBoot】SpringBoot 整合JDBC、Mybatis、Druid

本文介绍了在Spring Boot中使用JDBC和Druid数据源的方法。主要内容包括:1)通过Spring Boot Starter快速集成JDBC,配置数据库连接信息;2)使用JdbcTemplate进行CRUD操作;3)切换为阿里Druid数据源,配置监控功能。文章提供了详细的代码示例和配置说明,展示了如何通过Spring Boot简化数据库操作,同时利用Druid的数据源监控特性。还包含项目创建步骤、依赖配置和测试方法,适合开发者快速上手Spring Boot数据库开发。

杨DaB的博客 1201

SpringBoot——SpringBoot整合JDBC、Druid连接池

目录 一、SpringBoot对JDBC的整合 二、整合Druid 一、SpringBoot对JDBC的整合 依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri...

Guizy 2978

SpringBoot下JDBC的使用,Druid

JDBC的配置使用 首先在创建Spring初始化项目时候记得勾选 在application.yaml中配置好和数据库的连接信息 然后直接在项目中@Autowired JdbcTemplate jdbcTemplate;就可以使用了 package com.cbbpp.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core

qq_43891148的博客 284

SpringBoot整合JDBC,Druid

SpringBoot整合JDBC 一、SpringData简介 对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。 Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。 Sping Data 官网: https://spring.io/p

weixin_45723046的博客 345
上一篇: 远程连接MySQL时,出现Plugin cahcing_sha2_password could not be loaded问题
下一篇: SpringMVC配置文件片段以及相关注解
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值