maven中使用jdbc

2023-05-16

用到的有数据库连接池、JDBCTemplate

一、首先导入jar包

 <!--mysql驱动,使用对应版本jar包依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
            <scope>compile</scope>
        </dependency>
        <!--druid连接池,你也可以选择其他连接池,如c3p0-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
        <!--jdbcTemplate-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.2.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.1.2.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.1.2.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.1.2.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        

下面解释一下什么是连接池和JDBCTemplate

  1. 连接池
    1.1 什么是连接池
    实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。
    这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池.
    1.2 连接池的好处
    用池来管理Connection,这样可以重复使用Connection。 当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。
    具体内容请看这篇文章https://juejin.cn/post/7032089873972461582

  2. JDBCTemplate
    介绍:
    JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。
    JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。
    Spring源码地址:github.com/spring-proj…
    在JdbcTemplate中执行SQL语句的方法大致分为3类:
    execute:可以执行所有SQL语句,一般用于执行DDL语句。
    update:用于执行INSERT、UPDATE、DELETE等DML语句。
    queryXxx:用于DQL数据查询语句。
    call方法:用于执行存储过程、函数相关语句。
    具体内容请看这篇文章https://juejin.cn/post/6987025481711222792

二、然后写一个JDBCUtils类,jdbc的工具类

这个工具类把jdbc的内容拿出来封装成了一个类

package cn.itcast.travel.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/*
	1. 声明静态数据源成员变量
	2. 创建连接池对象
	3. 定义公有的得到数据源的方法
	4. 定义得到连接对象的方法
	5. 定义关闭资源的方法
 */
public class JDBCUtils {
	// 1.	声明静态数据源成员变量
	private static DataSource ds;

	// 2. 创建连接池对象
	static {
		// 加载配置文件中的数据
		InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
		/*
		在Java的编程过程中,我们经常需要在项目内或者是外部创建一些配置文件,用以维护一些与项目相关的基本配置。
		因此我们经常需要对这些配置文件进行读写的操作。Properties类就是常见的操作文件的类。
		 */
		Properties pp = new Properties();
		try {
			pp.load(is);
			// 创建连接池,使用配置文件中的参数
			ds = DruidDataSourceFactory.createDataSource(pp);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 3. 定义公有的得到数据源的方法
	public static DataSource getDataSource() {
		return ds;
	}

	// 4. 定义得到连接对象的方法
	public static Connection getConnection() throws SQLException {
		return ds.getConnection();
	}

	// 5.定义关闭资源的方法
	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {}
		}

		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {}
		}
	}

	// 6.重载关闭方法
	public static void close(Connection conn, Statement stmt) {
		close(conn, stmt, null);
	}
}


上面这个类加载的druid.properties文件。

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///travel?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT&allowPublicKeyRetrieval=true
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven中使用jdbc 的相关文章

随机推荐

  • ChatGPT系列之——中科院AcademicGPT学术优化

    文章目录 零 xff0c 指南相关网址友情链接 一 xff0c 安装Git软件二 xff0c 使用Git Bash克隆GitHub项目 xff1a 三 xff0c 配置config py文件四 xff0c 安装依赖方法一 xff1a 系统安
  • 根据变量设置card是否可点击;解构赋值重命名、添加新的字段

    问题分析 需要对解构赋值得来的变量重命名 span class token variable const span span class token punctuation span span class token variable at
  • JS策略模式_优化代码实例

    策略模式 策略模式 xff1a 定义一系列的算法 xff0c 把它们一个个封装起来 xff0c 并且使它们可以相互替换 将不变的部分和变化的部分隔开是每个设计模式的主题 xff0c 策略模式也不例外 xff0c 策略模式的目的就是将算法的使
  • 颜色的单位

    直观的颜色单位 在css可以直接使用颜色的单词来表示不同的颜色 xff0c 比如 xff0c red xff0c blus xff0c green RGB值 rgb是red xff0c green xff0c blue三元色 光的三元色 通
  • 关于14寸1080p屏幕笔记本Win10系统缩放建议

    这几天买了个新的1080p笔记本屏幕换上之后明显感觉比之前的768p好太多了 xff0c 无论是清晰度还是颜色上都更胜一筹 xff0c 但我开始纠结这个缩放问题了 xff0c 复现下我内心的os吧 选择100 缩放的好处与坏处 好处 同屏显
  • 解决虚拟机CentOS8无法上网的问题

    周五安装的虚拟机 xff0c 然后一直不能上网 xff0c 我查阅了好多资料 xff0c 试了好几次都没用 xff0c 今天终于把它搞好了 记录一下 一 1 首先保证虚拟机的网络适配器为NAT模式 2 设置虚拟机的 编辑 gt 虚拟网络编辑
  • tensorflow2 中tensor转为numpy

    tensorflow2 中tensor转为numpy 第一种使用with import tensorflow as tf Test span class token operator 61 span tf span class token
  • HTML5基础知识(全面)

    1 熟记各大主流浏览器内核版本面试常问哦 浏览器名称内核opera欧朋最初是自己的Presto内核 xff0c 后谷歌Webkit 到BlinkFirefox火狐Gecko内核俗称Firefox内核Chrome谷歌统称为Chromium或B
  • Java错题集(十六)

    目录 在第16行插入哪段代码可以获得一个Point对象的坐标 下面说法正确的是 xff1f xff08 xff09 如果此类已编译并运行 xff0c 则哪两个语句正确 xff1f true false null sizeof goto sy
  • 树莓派4b利用官方软件安装系统

    目录 资源准备一 安装系统1 格式化TF卡2 安装系统 二 连接启动1 连接2 登陆3 开启vnc 总结 资源准备 硬件 xff1a 树莓派4b板子 8G以上TF卡 读卡器 软件 xff1a 官方安装软件 xff1a Raspberry P
  • 解决树莓派4b开启VNC报错无法正确显示桌面

    开启vnc报错 原因 xff1a 由于分辨率太小 xff0c 无法显示 解决办法 xff1a 在终端输入以下内容 sudo raspi config 选择Display Options进入 选择VNC Resolution 选择除第一个分辨
  • js中数组内删除指定对象

    先上代码 xff01 span class token comment 因我使用的是xm select组件 xff0c 所以自带change xff08 即新变化的对象 xff09 和arr xff08 选中的所有对象 xff09 span
  • 【JDK1.8 新特性】Lambda表达式

    1 什么是Lambda表达式 xff1f Lambda 是一个匿名函数 xff0c 我们可以把 Lambda 表达式理解为是一段可以传递的代码 xff08 将代码像数据一样进行传递 xff09 使用它可以写出更简洁 更灵活的代码 作为一种更
  • 封装axios请求

    1 引入所需模块 引入axios模块 import axios from 39 axios 39 使用qs模块 xff0c 进行文件序列号化操作 import qs from 39 qs 39 2 判断当前环境 环境变量 let baseU
  • Matlab的Gpu加速(CUDA cudnn)

    多CUDA版本的切换 xff0c 及Matlab版本对应的CUDA版本 学习笔记 Matlab的Gpu加速 安装CUDA和cudnn时 xff0c 踩了不少坑 xff0c 总结如下几个经验 xff1a 1 显卡驱动的版本与CUDA是一对多的
  • win10添加新硬盘

    win10添加新硬盘 前言 前言 小白指导 xff0c 白到不能再白了 xff01 xff01 xff01 直接上图 关于文件系统介绍 文件系统是系统对文件的存放排列方式 xff0c 不同格式的文件系统关系到数据是如何在磁盘进行存储 xff
  • idea2020创建maven javaweb项目并运行 示例

    idea2020创建maven javaweb项目并运行 一 项目的创建二 pom xml简单介绍三 添加tomcat插件以方便运行项目1 在pom xml文件里加入以下配置 四 创建servlet并 运行项目1 创建Java文件夹并在文件
  • C++实现算法服务的一些经验总结

    文章目录 一 算法模型调用的几种方式二 python算法服务的优缺点三 C 43 43 算法服务的优缺点四 C 43 43 算法服务的几种实现方式五 C 43 43 基于http的算法服务实现思路六 记录调用 xff1a 日志 数据库七 性
  • Java中使用jedis操作redis(使用maven)

    jedis的使用 前言一 简单使用示例1 快速入门2 操作五种数据格式 二 jedis连接池 xff1a jedisPool1 示例2 jedies详细配置 三 创建连接池工具类1 jedis properties2 JediesPoolU
  • maven中使用jdbc

    用到的有数据库连接池 JDBCTemplate 一 首先导入jar包 lt mysql驱动 xff0c 使用对应版本jar包依赖 gt lt dependency gt lt groupId gt mysql lt groupId gt l