首页 > 其他分享 >2022-08-22 第八组 卢睿 学习心得

2022-08-22 第八组 卢睿 学习心得

时间:2022-08-22 21:24:05浏览次数:60  
标签:22 08 SQLException 2022 new Test import 数据库 连接池

目录

数据库连接池

connection是一种稀有资源,一个连接建立就创造了一个资源

jdbc使用数据库连接池的必要性

在使用基于web程序的数据库连接

  1. 在主程序中建立连接
  2. 执行SQL
  3. 断开连接

所有的jdbc连接通过DriverManager.getConnection
用完的连接不要被垃圾回收,能够重复使用

池化思想

每次去初始化一个连接池,连接池中会有很多个连接等待被使用
使用完连接之后,不需要关闭连接,只需要把连接还回到连接池
还回到连接池的操作不需要我们手动控制

设置一些属性,最大等待时间

比较常见的数据库连接池

  1. C3P0:2代数据库连接池,太老了
  2. DBCP:2代数据库连接池,太老了
  3. Druid(德鲁伊)数据库连接池,最好用的连接池
    整合了C3P0和DBCP各自的优点
    加入了日志监控,可以监控SQL语句的执行情况
  4. Hikari(光),目前最快的连接池,spring boot默认的连接池

必须有对应的属性文件
.properties
约定>配置>编码

德鲁伊数据库连接池

import org.junit.Test;

import java.io.IOException;
import java.util.Properties;

public class Ch01 {

    @Test
    public void test01() throws IOException, SQLException {
        Properties properties = new Properties();
        properties.load(Ch01.class.getClassLoader().getResourceAsStream("druid.properties"));

        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.configFromPropety(properties);

        System.out.println(druidDataSource.getConnection());
        System.out.println(druidDataSource.getCreateCount());
    }
}

配置文件

druid.url=jdbc:mysql://127.0.0.1:3306/jsoft?useUnicode=true&characterEncoding=utf8
druid.username=root
druid.password=123456
druid.driverName=com.mysql.jdbc.Driver

druid.initialSize=10
druid.maxActive=20
druid.maxWait=20

hikari数据库连接池


import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.Test;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;

public class Ch02 {

    @Test
    public void test01() throws IOException, SQLException {
        Properties properties = new Properties();
        properties.load(Ch01.class.getClassLoader().getResourceAsStream("hikari.properties"));

        HikariConfig hikariConfig = new HikariConfig(properties);
        HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);

        System.out.println(hikariDataSource.getConnection());
    }
}

配置文件

jdbcUrl=jdbc:mysql://127.0.0.1:3306/jsoft?useUnicode=true&characterEncoding=utf8
username=root
password=123456
driverClassName=com.mysql.jdbc.Driver

获取连接

import com.jsoft.util.BaseDao;
import org.junit.Test;

import java.sql.Connection;
import java.sql.SQLException;

public class Ch03 {

    @Test
    public void test01() {
        try {
            Connection connection = BaseDao.DATA_SOURCE.getConnection();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}

DBUtils

需要引入一个jar包


import com.jsoft.morning.demo2.Teacher;
import com.jsoft.util.BaseDao;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;

import java.sql.SQLException;
import java.util.List;

public class Ch01 {

    @Test
    public void test03() throws SQLException {

        QueryRunner runner = new QueryRunner(BaseDao.DATA_SOURCE);
        int i = runner.update("update teacher set name = ? where id = ?", "mmm", 6);
        System.out.println(i);

    }

    /**
     * 查询一个记录
     */
    @Test
    public void test02() throws SQLException {
        QueryRunner runner = new QueryRunner(BaseDao.DATA_SOURCE);
        Teacher teacher = runner.query("select * from teacher where id = ?", new BeanHandler<>(Teacher.class), 1);
        System.out.println(teacher);
    }

    /**
     * 查询多个记录
     * @throws SQLException
     */
    @Test
    public void test01() throws SQLException {
        // 要使用DBUtils使用的是一个类
        // 传入的是一个数据源DataSource,不是一个Connection
        QueryRunner runner = new QueryRunner(BaseDao.DATA_SOURCE);
        // 查询多个记录
        List<Teacher> teachers = runner.query("select * from teacher", new BeanListHandler<>(Teacher.class));
        System.out.println(teachers);
    }

}

标签:22,08,SQLException,2022,new,Test,import,数据库,连接池
From: https://www.cnblogs.com/lurui711/p/16614283.html

相关文章

  • 0822_浅学html
    1.超级链接普通的链接:<ahref="http://www.baidu.com"target="_self">百度一下</a><br>图像链接:<ahref="http://www.baidu.com"><imgwidth="150"src="img/libai.jpe......
  • 2022-08-22 第六组 刘明延 学习笔记
     ......
  • 2022-08-22 第五组 赖哲栋 学习笔记
    什么是HTMLHTML是用来描述网页的一种语言HTML叫做超文本标记语言(HyperTextMarkerUpLanguage)标记语言就是一套标记标签HTML使用标记标签来描述网页网页由谁来解......
  • 2022-8-22第一组孙乃宇
    HTML和CSS什么是HTMLHTML是用来描述网页的一种语言HTML叫做超文本标记语言(HyperTestMarkerUpLanguage)HTML不是编程语言,而是一种标记语言标记语言就是......
  • 2022.8.22
    上午补充一下PPT,讲了课,发现之前弦图性质的证明有些Bug。讲课内容没大问题,搞清楚二项式反演和扩展min-max容斥的推导,学习单位根反演。CF的题还没有时间看。TodoList先......
  • "蔚来杯"2022牛客暑期多校训练营(加赛)
    比赛链接:https://ac.nowcoder.com/acm/contest/38727E.Everyoneisbot题意:有\(n\)个人在群里复读,第\(i\)个人在第\(j\)个复读会获得\(a_{i,j}\)瓶冰红茶。......
  • 2022-08-22 第四小组 王星苹 学习笔记
    复习HTML,前端的一些复习。学习总结:  定义音频内容和定义视频内容<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metah......
  • 2022 8 22
     1:https://www.lanqiao.cn/problems/497/learning/取整函数(遗忘)https://blog.csdn.net/u010087338/article/details/121598961另外format格式控制能够避免结果省略0的......
  • 2022-08-20 第四组 王星苹 学习笔记
    学习心得   学习总结数据库连接池connection是一种稀有资源,一个连接建立就创建了一个资源。比如:QQ连上了,我的QQ和腾讯的服务器建立了一个连接,有代价,何时。有可......
  • 2022-08-22 第二组刘禹彤 学习笔记
    打卡37天    ###学习内容HTML概述HTML是用来描述网页的一种语言HTML叫做超文本标记语言(HyperTextMarkerUpLanguage)HTML不是编程语言,而是一种标记语言,标......