dbutils的使用

本文详细介绍了如何配置C3P0数据库连接池并使用DbUtils进行数据库操作。包括了Maven依赖配置,C3P0配置文件详解,以及使用JdbcUtils类获取数据源的方法。通过具体示例展示了如何使用QueryRunner执行SQL查询,并使用不同的Handler处理查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依赖

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.18</version>
		</dependency>
		<!-- 数据库配置相关架包 -->
		<dependency>
			<groupId>commons-dbutils</groupId>
			<artifactId>commons-dbutils</artifactId>
			<version>1.7</version>
		</dependency>

		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.2</version>
		</dependency>

c3p0-config.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置,只可以出现一次 -->
	<default-config>
		<!-- 配置JDBC 四个基本属性 -->
		<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://XXXX:3308/goods?characterEncoding=utf8&amp;useSSL=false
		</property>
		<property name="user">zhangsan</property>
		<property name="password">123123</property>
		<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
		<property name="acquireIncrement">3</property>
		<!-- 初始化数据库连接池时连接的数量 -->
		<property name="initialPoolSize">5</property>
		<!-- 数据库连接池中的最小的数据库连接数 -->
		<property name="minPoolSize">2</property>
		<!-- 数据库连接池中的最大的数据库连接数 -->
		<property name="maxPoolSize">10</property>
	</default-config>
	
	<named-config name="mysql">
		<!-- 配置JDBC 四个基本属性 -->
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://XXXX:3309/goods?characterEncoding=utf8&amp;useSSL=false
		</property>
		<property name="user">zhangsan</property>
		<property name="password">123123</property>
		<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
		<property name="acquireIncrement">3</property>
		<!-- 初始化数据库连接池时连接的数量 -->
		<property name="initialPoolSize">5</property>
		<!-- 数据库连接池中的最小的数据库连接数 -->
		<property name="minPoolSize">2</property>
		<!-- 数据库连接池中的最大的数据库连接数 -->
		<property name="maxPoolSize">10</property>
	</named-config>
	
	<named-config name="oracle">
		<!-- 配置JDBC 四个基本属性 -->
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://XXXX:3307/goods?characterEncoding=utf8&amp;useSSL=true
		</property>
		<property name="user">zhangsan</property>
		<property name="password">123123</property>
		<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
		<property name="acquireIncrement">3</property>
		<!-- 初始化数据库连接池时连接的数量 -->
		<property name="initialPoolSize">5</property>
		<!-- 数据库连接池中的最小的数据库连接数 -->
		<property name="minPoolSize">2</property>
		<!-- 数据库连接池中的最大的数据库连接数 -->
		<property name="maxPoolSize">10</property>
	</named-config>
	
</c3p0-config>

JdbcUtils

public class JdbcUtils {
	
	static ComboPooledDataSource ds=new ComboPooledDataSource();
	static ComboPooledDataSource ds_mysql;
	static ComboPooledDataSource ds_oracle;
	
	public static DataSource getDataSources(String type) {
		if(StringUtils.isEmpty(type)) {
			return ds;
		}else if ("mysql".equalsIgnoreCase(type)) {
			ds_mysql=new ComboPooledDataSource("mysql");
			return ds_mysql;
		}else if ("oracle".equalsIgnoreCase(type)) {
			ds_oracle=new ComboPooledDataSource();
			return ds_oracle;
		}
		
		return ds;
	}

	public static DataSource getDataSources() {
		return getDataSources("");
	}
}

DbutilsTest

public class DbUtilsTest {

	public static void main(String[] args) throws Exception {

		findOne("09b2c272-88f8-4f27-b9aa-a1f16ea7f6d4");
	}

	public static void findList() throws Exception {
//		ComboPooledDataSource ds = new ComboPooledDataSource();

		QueryRunner run = new QueryRunner(JdbcUtils.getDataSources());

		String sql = "select * from t_user_test";

		List list = run.query(sql, new BeanListHandler(User.class));
		System.out.println(list);

		Long timemillis = System.currentTimeMillis();
		String file = System.getProperty("user.dir") + File.separator + "data" + File.separator + "testfan_"
				+ timemillis + ".xlsx";
		ExcelUtils.getInstance().exportObjects2Excel(list, User.class, file);
	}

	
	public static void findOne(String uid) throws Exception {
//		ComboPooledDataSource ds = new ComboPooledDataSource();

		QueryRunner run = new QueryRunner(JdbcUtils.getDataSources());

		String sql = "select * from t_user_test where uid=?";

		User  user= run.query(sql,new BeanHandler(User.class),uid);
		System.out.println(user);

	}
}

dbutils各种Handler

• ArrayHandler:把结果集中的第一行数据转成对象数组。

• ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。

• BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。

• BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存 放到List里。

• MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对 应的值。

• MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。

• ColumnListHandler:将结果集中某一列的数据存放到List中。

• KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的 key把每个Map再存放到一个Map里。

• ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值