首页 > 数据库 >spring 简单的使用 Hikari连接池 和 jdbc连接mysql 的一个简单例子

spring 简单的使用 Hikari连接池 和 jdbc连接mysql 的一个简单例子

时间:2024-03-10 11:12:29浏览次数:28  
标签:jdbc spring springframework dataSource context mysql org import

pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>jdbctemplatetest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.1.9.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.9.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>5.0.1</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
View Code

配置文件,此处支持xml 和properties 配置

jdbc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">


<!--    此处使用base.properties 配置文件-->
    <context:property-placeholder location="base.properties"></context:property-placeholder>
    <bean id="HikariDataSource" class="com.jdbc.datasource.DataSource" factory-method="HikariDataSource">
        <constructor-arg name="poolname" type="java.lang.String" value="${poolname}"/>
        <constructor-arg name="driverClassName" type="java.lang.String" value="${driverClass}"/>
        <constructor-arg name="jdbcurl" type="java.lang.String" value="${jdbcUrl}"/>
        <constructor-arg name="username" type="java.lang.String" value="${user}"/>
        <constructor-arg name="password" type="java.lang.String" value="${password}"/>
        <constructor-arg name="minimumIdle" type="java.lang.Integer" value="${minPoolSize}"/>
        <constructor-arg name="maximumpoolSize" type="java.lang.Integer" value="${maxPoolSize}"/>
    </bean>
    <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg name="dataSource" ref="HikariDataSource"></constructor-arg>
    </bean>
</beans>

base.properties

# sysdb data source
poolname=sysdb
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/mytest?autoReconnect=true&rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&useSSL=false
user=root
password=123456
maxPoolSize=5
minPoolSize=1
initialPoolSize=1
View Code
DataSource.java
package com.jdbc.datasource;

import com.zaxxer.hikari.HikariDataSource;

/**
 * @authour cyf
 * 2023/6/28 18:29
 */

public class DataSource {
    /** 数据源(HikariCP) 优*/
    public static HikariDataSource HikariDataSource(final String poolname, final String driverClassName, final String jdbcurl, final String username,
                                                    final String password, final Integer minimumIdle, final Integer maximumpoolSize) {
        HikariDataSource dataSource = new HikariDataSource();
        // 连接池自定义名称,可缺省,多数据源需指定
        dataSource.setPoolName("hikari-" + poolname);
        // 可缺省,会自动填充,有意外情况
        dataSource.setDriverClassName(driverClassName);
        // 连接URL
        dataSource.setJdbcUrl(jdbcurl);
        // 认证用户
        dataSource.setUsername(username);
        // 认证密钥
        dataSource.setPassword(password);
        // 最小空闲连接数(默认10个)
        dataSource.setMinimumIdle(minimumIdle);
        // 连接池中允许的最大连接数(默认10个,推荐:((core_count * 2) + effective_spindle_count))
        dataSource.setMaximumPoolSize(maximumpoolSize);
        // 连接只读数据库时配置为true(保证安全)
        dataSource.setReadOnly(false);
        // 自动提交池中返回的连接,默认值为true,如果为false则需要手动提交事物
        dataSource.setAutoCommit(true);
        // 分配连接的最大时长(毫秒,默认30秒),超时则SQLException
        dataSource.setConnectionTimeout(30000);
        // 连接允许闲置的最长时间(毫秒,默认10分),超时则被释放
        dataSource.setIdleTimeout(600000);
        // 连接最长生命周期(毫秒,默认30分),超时则被释放(比DB超时时长少30秒,参考MySQL:wait_timeout参数[show variables like '%timeout%';])
        dataSource.setMaxLifetime(1800000);
        // 数据库连接测试语句
        dataSource.setConnectionTestQuery("SELECT 1");
        return dataSource;
    }
}
MyConfiguration.java
package com.jdbc.datasource;

import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

/**
 * @authour cyf
 * 2023/6/28 18:42
 */
@Configuration
@PropertySource("classpath:base.properties")//指定配置文件
public class MyConfiguration {

    //@Value只能单个注入
    @Value("${user}") //@PropertySource 指定配置文件后才能扫描到
    private String user;

    @Bean
    public HikariDataSource getHikariDataSource(){
        HikariDataSource source = new HikariDataSource();
        source.setUsername(user);
        source.setPassword("123456");
        source.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mytest?autoReconnect=true&rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&useSSL=false");
        source.setDriverClassName("com.mysql.jdbc.Driver");
        return source;
    }

    @Bean
    public JdbcTemplate getJdbcTemplate(){
        return new JdbcTemplate(getHikariDataSource());
    }


}
Start.java
package com.jdbc.datasource;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 * @authour cyf
 * 2023/6/28 18:35
 */

public class Start {
    public static void main(String[] args) {
        //使用jdbc.xml配置
        //ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("jdbc.xml");
        //JdbcTemplate jdbctemplate = (JdbcTemplate)context.getBean("jdbctemplate");

        //使用base.properties配置
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);
        JdbcTemplate jdbctemplate = (JdbcTemplate) context.getBean(JdbcTemplate.class);


        String sql = "insert into person(name,pass,age) values(?,?,?)";
        int result = jdbctemplate.update(sql, "zhangsan", "1111", 10);
        System.out.println(result);

    }
}

 



标签:jdbc,spring,springframework,dataSource,context,mysql,org,import
From: https://www.cnblogs.com/ruber/p/18063871

相关文章

  • datax从mysql迁移数据到OceanBase
    datax部署下载dataxdatax下载地址安装dataxtar-zxvfdatax.tar.gz使用datax使用配置文件{"job":{"setting":{"speed":{"channel":4},"errorLimit":{......
  • mysqldump从mysql迁移数据到OceanBase
    使用mysqldump导出数据/usr/bin/mysqldump--single-transaction-Bemployees-S/data/mysql/mysql.sock-uroot-p>dump.sqlob使用source加载obclient-P2883-h192.168.56.20-uroot@mq_t1-A校验数据使用统计信息两个数据库收集统计信息的命令相同收集统计信息an......
  • mysql基础知识整理
    事务1.1事务的四大特性原子性(Atomicity):事务包含的所有操作要么全部成功,要么全部失败回滚一致性(Consistency):一个事务执行之前和执行之后都必须处于一致性状态隔离性(Isolation):跟隔离级别相关,如readcommitted,一个事务只能读到已经提交的修改持久性(Durability):一个事务一旦被......
  • Mysql之查询语句
    前言:Mysql中查询语句是日常使用最频繁和复杂的语句,Mysql查询有单表查询和多表连接查询,以下通过案例来熟悉Mysql的查询语句。一、单表查询现有hellodb数据库和students等表mysql>SHOWDATABASES;+--------------------+|Database|+--------------------+|i......
  • 【Spring】jdbc
     动态数据源切换:https://www.jianshu.com/p/a042ff2ee2ae实现数据源切换的功能就是自定义一个类扩展AbstractRoutingDataSource抽象类,其实该相当于数据源DataSourcer的路由中介,可以实现在项目运行时根据相应key值切换到对应的数据源DataSource上。publicabstractclassAbs......
  • 开启 mysql 的 general_log
    在做等保评测时,会要求mysql开启general_log日志,该日志会记录所有的数据库动作,增长幅度非常大,因此适合于在出现问题时临时开启一段时间,待问题排查解决后再进行关闭,否则日志文件的增长速度会超出你的想象。1、首先来看一下关于general_log的几个参数: mysql>showvariable......
  • MySql中SUM函数计算错误问题
    前言今天一个很久前做的项目突然找到我,说是之前做的项目中,页面上数据汇总和列表中的数据的总数存在对不上的问题。说是列表是对的,但是根据列表统计出来的数据要比正常小很多。排查这个项目已经好几年了,之前用了很久都是正常的,不可能会突然出问题了;我觉得这个统计肯定是没问题了......
  • SpringCloud入门
    微服务架构的出现单体应用之殇无法快速迭代代码合并冲突,沟通成本大幅提高回归用例庞杂,无法快速迭代无法快速恢复某版本小需求有bug需要回退整个版本的功能,且需要再走一遍冗长的发布流程微服务架构优势微服务架构是在SOA(Service-OrientedArchitecture,面向服务的架......
  • MYSQL学习笔记22: 多表查询
    多表查询单表查询查询emp表select*fromemp;查询dept表select*fromdept;笛卡尔积(全组合)#emp表有4条记录,dept表有6条记录#笛卡尔积有4*6=24条记录select*fromemp,dept;消除无效的笛卡尔积(emp和dept通过dept_id连接)select*fromemp,deptw......
  • springboot注册
    查询用户,判断用户名是否被占用。1.没有被占用,则注册2.被占用,则显示用户名已被占用!service:UserServiceimportcom.example.pojo.User;publicinterfaceUserService{//根据用户名查询用户UserfindByUserName(Stringusername);}mapper:UserMapper@Map......