Java Druid连接池与Apache的DBUtils使用教程

目录
  • Druid连接池
    • 连接池思想
    • Druid连接池使用步骤
      • 引入相关jar包
      • 创建database.properties配置文件
      • 编写连接池工具类
    • Druid连接池测试
  • Apache的DBUtils使用
    • Apache DBUtils介绍
      • Apache DBUtils特征
      • Apache DbUtils主要组成
      • Apache DbUtils使用步骤
    • 综合案例
      • 创建product表
      • 向表中添加数据
      • 创建实体类Product
      • 创建ProductDao接口
      • 创建ProductDaoImpl实现类
      • 创建ProductService接口
      • 创建ProductServiceImpl实现类
      • 创建测试类

Druid连接池

连接池思想

在程序初始化时,提前创建好指定数量的数据库连接对象存储在“池子”中(这个池子称为“连接池”),当需要连接数据库的时候,从这个“池子”中取出一个连接对象使用,使用完毕后,不会将这个连接对象关闭,而是将这个连接对象放回“池子”中,实现复用,节省资源。

Druid连接池使用步骤

引入相关jar包

在lib文件夹中引入druid-1.1.5.jar文件和mysql-connector-java-5.1.0-bin.jar文件,并将两个jar文件配置到项目中。

创建database.properties配置文件

在src文件夹下创建database.properties配置文件,配置文件中内容如下: 连接设置

初始化连接,连接池连接对象数量

最大连接数

最小空闲连接

超时等待时间(毫秒为单位)

# 连接设置
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcdatabase
username=root
password=123456

# 初始化连接,连接池连接对象数量
initialSize=10

#最大连接数
maxActive=30

#最小空闲连接
maxIdle=5

#超时等待时间(毫秒为单位)
maxWait=3000

编写连接池工具类

声明一个连接池对象

实例化配置文件对象

  • 加载配置文件内容
  • 创建连接池

获取连接对象

  • 通过连接池获得连接对象

释放资源,将连接对象放入连接池中

  • 使用完连接对象后,将连接对象还给连接池,这里的close()方法是DruidPooledConnection
  • 实现类里的close()方法,将connection连接对象还给连接池
package com.cxyzxc.www.utils;
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;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
public class DBUtils {
	// 声明一个连接池对象
	private static DruidDataSource druidDataSource;
	static {
		// 实例化配置文件对象
		Properties properties = new Properties();
		try {
			// 加载配置文件内容
			InputStream is = DBUtils.class
					.getResourceAsStream("/database.properties");
			properties.load(is);
			// 创建连接池
			druidDataSource = (DruidDataSource) DruidDataSourceFactory
					.createDataSource(properties);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	// 获取连接对象
	public static Connection getConnection() {
		try {
			// 通过连接池获得连接对象
			return druidDataSource.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	// 释放资源,将连接对象放入连接池中
	public static void closeAll(Connection connection, Statement statement,
			ResultSet resultSet) {
		try {
			if (resultSet != null) {
				resultSet.close();
			}
			if (statement != null) {
				statement.close();
			}
			if (connection != null) {
				// 使用完连接对象后,将连接对象还给连接池,这里的close()方法是DruidPooledConnection实现类里的close()方法,将connection连接对象还给连接池
				connection.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

Druid连接池测试

package com.cxyzxc.www.utils;
import java.sql.Connection;
public class Test {
	public static void main(String[] args) {
		// 获取20个连接对象,输出连接对象,地址值不同
		for (int i = 1; i <= 20; i++) {
			Connection connection = DBUtils.getConnection();
			System.out.println(connection);
			// 调用关闭连接对象的方法后,发现获取的20个连接对象地址值是同一个,说明每次从连接池中取出的连接对象是同一个
			// DBUtils.closeAll(connection, null, null);
		}
	}
}

Apache的DBUtils使用

  前面的DBUtils工具类是我们经过千难万阻自己封装的,也有一些组织给我们封装DBUtils工具类,比如Apache组织提供了一个对JDBC进行简单封装的开源工具类库Commons DbUtils类,使用它能够简化JDBC应用程序的开发,同时也不影响程序的性能。

Apache DBUtils介绍

Apache DBUtils特征

Apache DBUtils是java编程中的数据库操作实用工具,小巧简单实用,主要特征有:

1)对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;

2)对于数据表的写操作,也变得很简单(只需写sql语句)

3)可以使用数据源,使用JNDI,数据库连接池等技术来优化性能–重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。

Apache DbUtils主要组成

1)ResultSetHandler接口:转换类型接口

  • BeanHandler类:实现类,把一条记录转换成对象。
  • BeanListHandler类:实现类,把多条记录转换成List集合。
  • ScalarHandler类:实现类,适合获取一行一列的数据。

2)QueryRunner类:执行SQL语句的类

  • update()方法:增、删、改
  • query()方法:查询  

Apache DbUtils使用步骤

1)创建lib文件夹,导入需要的jar包,并将其配置到项目中

  • mysql-connector-java-5.1.0-bin.jar
  • druid-1.1.5.jar
  • commons-dbutils-1.7.jar

2)在src文件夹下创建database.properties配置文件,配置文件中内容如下:

  • 连接设置
  • 初始化连接,连接池连接对象数量
  • 最大连接数
  • 最小空闲连接
  • 超时等待时间(毫秒为单位)

# 连接设置
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcdatabase
username=root
password=123456

# 初始化连接,连接池连接对象数量
initialSize=10

#最大连接数
maxActive=30

#最小空闲连接
maxIdle=5

#超时等待时间(毫秒为单位)
maxWait=3000

3)编写DBUtils连接池工具类

声明一个连接池对象

实例化配置文件对象

  • 加载配置文件内容
  • 创建连接池

返回一个数据源

package com.cxyzxc.www.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
public class DBUtils {
	// 声明一个连接池对象
	private static DruidDataSource druidDataSource;
	static {
		// 实例化配置文件对象
		Properties properties = new Properties();
		try {
			// 加载配置文件内容
			InputStream is = DBUtils.class
					.getResourceAsStream("/database.properties");
			properties.load(is);
			// 创建连接池
			druidDataSource = (DruidDataSource) DruidDataSourceFactory
					.createDataSource(properties);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//返回一个数据源
	public static DataSource getDataSource(){
		return druidDataSource;
	}
}

综合案例

创建product表

CREATE TABLE IF NOT EXISTS `product` (
`pid` INT PRIMARY KEY AUTO_INCREMENT COMMENT '产品编号',
`pname` VARCHAR(20) NOT NULL COMMENT '产品名称',
`price` DOUBLE NOT NULL COMMENT '产品价格',
`birthday` DATE NOT NULL COMMENT '产品生产日期'
);

向表中添加数据

INSERT INTO `product`(`pid`,`pname`,`price`,`birthday`)VALUES(1001,'虎皮凤爪',20.5,'2022-06-12');
INSERT INTO `product`(`pid`,`pname`,`price`,`birthday`)VALUES(1002,'卧龙锅巴',18.5,'2022-09-22');

创建实体类Product

  • 添加实体类的私有变量
  • 添加有参无参构造方法
  • 添加get/set方法
  • 重写toString()方法
package com.cxyzxc.www.entity;
import java.util.Date;
public class Product {
	private int pid;
	private String pname;
	private double price;
	private Date birthday;
	public Product() {
		super();
	}
	public Product(String pname, double price, Date birthday) {
		super();
		this.pname = pname;
		this.price = price;
		this.birthday = birthday;
	}
	public Product(int pid, String pname, double price, Date birthday) {
		super();
		this.pid = pid;
		this.pname = pname;
		this.price = price;
		this.birthday = birthday;
	}
	public int getPid() {
		return pid;
	}
	public void setPid(int pid) {
		this.pid = pid;
	}
	public String getPname() {
		return pname;
	}
	public void setPname(String pname) {
		this.pname = pname;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	@Override
	public String toString() {
		return "Product [pid=" + pid + ", pname=" + pname + ", price=" + price
				+ ", birthday=" + birthday + "]";
	}
}

创建ProductDao接口

创建ProductDao接口,实现增删改查方法名的统一。

package com.cxyzxc.www.dao;
import java.util.List;
import com.cxyzxc.www.entity.Product;
public interface ProductDao {
	//添加
	int insert(Product product);
	//删除
	int delete(int pid);
	//修改
	int update(Product product);
	//查询单个
	Product selectOne(int pid);
	//查询所有
	List<Product> selectAll();
}

创建ProductDaoImpl实现类

创建ProductDaoImpl实现类来实现ProductDao接口,在重新方法中编写具体的逻辑代码。

package com.cxyzxc.www.dao.impl;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.cxyzxc.www.dao.ProductDao;
import com.cxyzxc.www.entity.Product;
import com.cxyzxc.www.utils.DBUtils;
import com.cxyzxc.www.utils.DateUtils;
public class ProductDaoImpl implements ProductDao {
	// 创建QueryRunner对象,并传递一个数据源对象
	private QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());
	@Override
	public int insert(Product product) {
		String sql = "INSERT INTO `product`(`pname`,`price`,`birthday`)VALUES(?,?,?);";
		Object[] args = { product.getPname(), product.getPrice(),
				DateUtils.utilDateToSqlDate(product.getBirthday()) };
		try {
			return queryRunner.update(sql, args);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 0;
	}
	@Override
	public int delete(int pid) {
		String sql = "DELETE FROM `product` WHERE `pid` = ?;";
		try {
			return queryRunner.update(sql, pid);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 0;
	}
	@Override
	public int update(Product product) {
		String sql = "UPDATE `product` SET `pname` = ?,`price`=?,`birthday`=? WHERE `pid`=?;";
		Object[] args = { product.getPname(), product.getPrice(),
				DateUtils.utilDateToSqlDate(product.getBirthday()),
				product.getPid() };
		try {
			return queryRunner.update(sql, args);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 0;
	}
	@Override
	public Product selectOne(int pid) {
		// 查询一个数据,使用BeanHandler将记录转换为对象
		BeanHandler<Product> product = new BeanHandler<Product>(Product.class);
		String sql = "SELECT * FROM `product` WHERE `pid`=?;";
		try {
			return queryRunner.query(sql, product, pid);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	@Override
	public List<Product> selectAll() {
		// 查询一个数据,使用BeanHandler将记录转换为对象
		BeanListHandler<Product> productList = new BeanListHandler<Product>(Product.class);
		String sql = "SELECT * FROM `product`;";
		try {
			return queryRunner.query(sql, productList);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

创建ProductService接口

创建ProductService接口来实现业务层增删改查方法名的统一。

package com.cxyzxc.service;
import java.util.List;
import com.cxyzxc.www.entity.Product;
public interface ProductService {
	//增加
	int addProduct(Product product);
	//删除
	int deleteProduct(int pid);
	//修改
	int updateProduct(Product product);
	//查询单个
	Product selectOneProduct(int pid);
	//查询所有
	List<Product> selectAllProduct();
}

创建ProductServiceImpl实现类

创建ProductServiceImpl实现类来实现ProductService接口。

package com.cxyzxc.service.impl;
import java.util.List;
import com.cxyzxc.service.ProductService;
import com.cxyzxc.www.dao.ProductDao;
import com.cxyzxc.www.dao.impl.ProductDaoImpl;
import com.cxyzxc.www.entity.Product;
public class ProductServiceImpl implements ProductService {
	ProductDao productDao = new ProductDaoImpl();
	@Override
	public int addProduct(Product product) {
		// 查询添加的商品是否存在
		Product pd = productDao.selectOne(product.getPid());
		if (pd == null) {
			return productDao.insert(product);
		} else {
			System.out.println("商品已经存在,不能重复添加");
		}
		return 0;
	}
	@Override
	public int deleteProduct(int pid) {
		// 查询添加的商品是否存在
		Product pd = productDao.selectOne(pid);
		if (pd != null) {
			return productDao.delete(pid);
		} else {
			System.out.println("商品不存在,不能删除");
		}
		return 0;
	}
	@Override
	public int updateProduct(Product product) {
		// 查询添加的商品是否存在
		Product pd = productDao.selectOne(product.getPid());
		if (pd!= null) {
			return productDao.update(product);
		} else {
			System.out.println("商品不存在,不能修改");
		}
		return 0;
	}
	@Override
	public Product selectOneProduct(int pid) {
		Product product =productDao.selectOne(pid);
		if(product!=null){
			return product;
		}else{
			System.out.println("没有你要查找产品,查找失败");
		}
		return null;
	}
	@Override
	public List<Product> selectAllProduct() {
		 List<Product> productList = productDao.selectAll();
		 if(productList.size()!=0){
			 return productList;
		 }else{
			 System.out.println("数据库为空,没有产品");
		 }
		return null;
	}
}

创建测试类

测试插入数据

package com.cxyzxc.www.view;
import com.cxyzxc.service.ProductService;
import com.cxyzxc.service.impl.ProductServiceImpl;
import com.cxyzxc.www.entity.Product;
import com.cxyzxc.www.utils.DateUtils;
public class Test01InsertProduct {
	public static void main(String[] args) {
		//创建ProductService引用,指向ProductServiceImpl实现类
		ProductService productService = new ProductServiceImpl();
		//增加产品
		 Product product = new Product(1003,"流心威化饼干", 13.5, DateUtils.strDateToUtilDate("2022-11-10"));
		 int result = productService.addProduct(product);
		 String str = result==1?"商品添加成功":"商品添加失败";
		 System.out.println(str);
	}
}

测试删除数据

package com.cxyzxc.www.view;
import com.cxyzxc.service.ProductService;
import com.cxyzxc.service.impl.ProductServiceImpl;
public class Test02DeleteProduct {
	public static void main(String[] args) {
		// 创建ProductService引用,指向ProductServiceImpl实现类
		ProductService productService = new ProductServiceImpl();
		int result = productService.deleteProduct(1003);
		String str = result == 1 ? "删除成功" : "删除失败";
		System.out.println(str);
	}
}

测试修改数据

package com.cxyzxc.www.view;
import com.cxyzxc.service.ProductService;
import com.cxyzxc.service.impl.ProductServiceImpl;
import com.cxyzxc.www.entity.Product;
import com.cxyzxc.www.utils.DateUtils;
public class Test03UpdateProduct {
	public static void main(String[] args) {
		// 创建ProductService引用,指向ProductServiceImpl实现类
		ProductService productService = new ProductServiceImpl();
		// 增加产品
		Product product = new Product(1002, "流心威化饼干", 13.5,
				DateUtils.strDateToUtilDate("2022-11-10"));
		int result = productService.updateProduct(product);
		String str = result == 1 ? "修改成功" : "修改失败";
		System.out.println(str);
	}
}

测试查询一条数据

package com.cxyzxc.www.view;
import com.cxyzxc.service.ProductService;
import com.cxyzxc.service.impl.ProductServiceImpl;
import com.cxyzxc.www.entity.Product;
public class Test04SelectOneProduct {
	public static void main(String[] args) {
		// 创建ProductService引用,指向ProductServiceImpl实现类
		ProductService productService = new ProductServiceImpl();
		Product product = productService.selectOneProduct(1003);
		if (product != null) {
			System.out.println(product);
		} else {
			System.out.println("你要查询的商品不存在");
		}
	}
}

测试查询所有数据

package com.cxyzxc.www.view;
import java.util.List;
import com.cxyzxc.service.ProductService;
import com.cxyzxc.service.impl.ProductServiceImpl;
import com.cxyzxc.www.entity.Product;
public class Test05SelectAllProduct {
	public static void main(String[] args) {
		// 创建ProductService引用,指向ProductServiceImpl实现类
		ProductService productService = new ProductServiceImpl();
		List<Product> productList = productService.selectAllProduct();
		for (int i = 0; i < productList.size(); i++) {
			System.out.println(productList.get(i));
		}
	}
}

到此这篇关于Java Druid连接池与Apache的DBUtils使用教程的文章就介绍到这了,更多相关Java Druid连接池内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 数据库连接池Druid与Hikari对比详解

    目录 Druid竞品对比 Hikari 官方性能测试数据 对比 总结 Druid竞品对比 功能类别 功能 Druid HikariCP DBCP Tomcat-jdbc C3P0 性能 PSCache 是 否 是 是 是 LRU 是 否 是 是 是 SLB负载均衡支持 是 否 否 否 否 稳定性 ExceptionSorter 是 否 否 否 否 扩展 扩展 Filter JdbcIntercepter 监控 监控方式 jmx/log/http jmx/metrics jmx jmx jmx 支

  • SpringBoot整合Mybatis与druid实现流程详解

    目录 SpringBoot整合junit SpringBoot整合junit SpringBoot整合junit的classes SpringBoot整合Mybatis 整合前的准备 整合Mybatis SpringBoot 整合druid 配置前置知识小点 整合druid SpringBoot整合junit SpringBoot整合junit ①还是一样,我们首先创建一个SpringBoot模块. 由于我们并不测试前端,而只是整合junit,所以不用选择模板,选择其中的web即可. 完成以后我

  • SpringBoot整合阿里 Druid 数据源的实例详解

    目录 1. 在容器中注册 DruidDataSource 数据源. 2. Druid 数据源各种属性配置方法 3. 开启Druid的内置监控页面 4. 打开 Druid 监控统计功能 5. 配置Web和Spring关联监控 6. 配置防火墙: 7. 给监控页加入账号密码 前言:今年是我的第二个 1024 了 ,和我一起大声说出来,技术宅改变世界!!! 本节主要介绍的是:SpringBoot 整合阿里 Druid 数据源手动配置方法 1. 在容器中注册 DruidDataSource 数据源. 编

  • 拦截Druid数据源自动注入帐密解密实现详解

    目录 背景 加密数据源自主实现流程 基础巩固 额外尝试 启示录 背景 SpringBoot 项目,使用 Druid 自动装配的数据源,数据源的帐号密码配置加密后,如何完成数据源的装配呢? druid-spring-boot-starter 虽然自带了加密配置,但是密钥也是配置的,如果需要用自定义的加密解密工具,如果不用自带的工具,怎么自定义实现加密数据源的装配呢? 本文从 DruidDataSourceAutoConfigure 类源码入手,仿造该类,自定义一个数据源注入配置,在真正注入 Dru

  • Druid之连接创建及销毁示例详解

    目录 前言 正文 一. DruidDataSource连接创建 二. DruidDataSource连接销毁 总结 前言 Druid是阿里开源的数据库连接池,是阿里监控系统Dragoon的副产品,提供了强大的可监控性和基于Filter-Chain的可扩展性. 本篇文章将对Druid数据库连接池的连接创建和销毁进行分析.分析Druid数据库连接池的源码前,需要明确几个概念. Druid数据库连接池中可用的连接存放在一个数组connections中: Druid数据库连接池做并发控制,主要靠一把可重

  • 解决springboot druid数据库连接池连接失败后一直重连问题

    目录 druid数据库连接池连接失败后一直重连问题 druid数据库连接池技术的实现与常见错误 第一步,win+R cmd进入到doc窗口,敲入mysql -V 第二步,写好配置文件jdbc.properties 总结 druid数据库连接池连接失败后一直重连问题 当数据库暂停或者拒绝连接时,druid会一直连接 增加如下配置可以解决重连问题 spring.datasource.druid.break-after-acquire-failure=true spring.datasource.dr

  • Java Druid连接池与Apache的DBUtils使用教程

    目录 Druid连接池 连接池思想 Druid连接池使用步骤 引入相关jar包 创建database.properties配置文件 编写连接池工具类 Druid连接池测试 Apache的DBUtils使用 Apache DBUtils介绍 Apache DBUtils特征 Apache DbUtils主要组成 Apache DbUtils使用步骤 综合案例 创建product表 向表中添加数据 创建实体类Product 创建ProductDao接口 创建ProductDaoImpl实现类 创建P

  • Java中Druid连接池连接超时获取不到连接的解决

    错误内容: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 600, maxActive 600, creating 0 detail: Service Error:Cannot find a proper coonection from STDB 错误日志截图: 解决过程: 1.添加了三个参数 作用是如果超过3分钟,连接未释放,那么关闭连接,并报错. 2.进行请求,并查看日志 确认获

  • 低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限

    目录 现象 根因分析 getLastPacketReceivedTimeMs()方法调用时机 解决方案 现象 应用升级MySQL驱动8.0后,在并发量较高时,查看监控打点,Druid连接池拿到连接并执行SQL的时间大部分都超过200ms 对系统进行压测,发现出现大量线程阻塞的情况,线程dump信息如下: "http-nio-5366-exec-48" #210 daemon prio=5 os_prio=0 tid=0x00000000023d0800 nid=0x3be9 waiti

  • jdbc与druid连接池的使用详解

    使用jdbc实现对数据库的操作 Ⅰ 获取数据库连接 package org.example.utils; import java.sql.*; public class JavaDateConnection { /** * 获取数据库连接 * @return Connection */ public Connection getConn() { //project为数据库名 String url = "jdbc:mysql://localhost:3306/project"; //用户

  • SpringBoot集成Druid连接池连接MySQL8.0.11

    目录 1.配置依赖 1.1MySQL Connector/J依赖配置 maven 1.2Druid依赖配置 2.配置DataSource 2.1创建配置类 2.2注意事项 这篇博客简单介绍spring boot集成druid连接池的简单配置和注意事项 本次使用的是MySQL8.0.11版本 前提:一个已经搭建好的Spring Boot项目和可以使用的数据库 注意:MySQL8.0.X的配置和5.7.X有小差异,整体思路完全一样 1.配置依赖 依赖管理我们可以使用maven或者gradle MyS

  • Java httpClient连接池支持多线程高并发的实现

    当采用HttpClient httpClient = HttpClients.createDefault() 实例化的时候.会导致Address already in use的异常. 信息: I/O exception (java.net.BindException) caught when processing request to {}->http://**.**.**.** Address already in use: connect 十一月 22, 2018 5:02:13 下午 or

  • Spring集成Druid连接池及监控配置的全过程

    目录 前言 如何集成Druid 1.增加相关依赖 2.配置DataSource 3.配置项参数application.properties 4.代码相关 5.启动验证 druid的内置filters 拦截器stat(default.counter) 拦截器mergeStat 拦截器encoding 拦截器 log4j(log4j2.slf4j.commonlogging.commonLogging) 拦截器wall 拦截器Config Druid和HikariCP如何选择 总结 前言 前一篇文章

  • JSP Spring中Druid连接池配置详解

    JSP Spring中Druid连接池配置 jdbc.properties url=jdbc:postgresql://***.***.***.***:****/**** username=*** password=*** applicationContext.xml中配置bean <!-- 阿里 druid 数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSou

  • SpringBoot使用 druid 连接池来优化分页语句

    一.前言 一个老系统随着数据量越来越大,我们察觉到部分分页语句拖慢了我们的速度. 鉴于老系统的使用方式,不打算使用pagehelper和mybatis-plus来处理,加上系统里使用得是druid连接池,考虑直接使用druid来优化. 二.老代码 老代码是使用得一个mybatis插件进行的分页,分页的核心代码如下: // 记录统计的 sql String countSql = "select count(0) from (" + sql+ ") tmp_count"

  • springboot整合druid连接池的步骤

    使用springboot默认的连接池 导入springboot data-jdbc依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> 配置文件配置连接池 spring: datasource: username: root pass

随机推荐