DbUtils的使用

目录

导入相关的jar包

项目的目录结构

数据库

 c3p0-config.xml

C3P0Util.java

Account.java

DbUtilsDemo.java


导入相关的jar包

我们使用了c3p0连接池

c3p0-0.9.5.2.jar

commons-dbutils-1.7.jar

mchange-commons-java-0.2.11.jar

mysql-connector-java-8.0.12.jar

项目的目录结构

数据库

 c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <default-config>
    <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/bank?useSSL=false&amp;serverTimezone=UTC</property>
    <property name="user">root</property>
    <property name="password">123456</property>
    
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
    <property name="maxStatements">200</property>
  </default-config>
</c3p0-config>

C3P0Util.java

package com.zhujunwei.util ;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;


public class C3P0Util {

	static ComboPooledDataSource dataSource = null ;
	static {
		dataSource = new ComboPooledDataSource() ;
	}
	
	/**
	 * 得到Connection连接
	 * @return dataSource
	 * @throws SQLException 
	 */
	public  static Connection getConnection() throws SQLException {
		return dataSource.getConnection();
		
	}
	
	/**
	 * 得到DataSource连接资源
	 * @return dataSource
	 */
	public static DataSource getDataSource() {
		return dataSource ;
	}
	
	/**
	 * 释放资源
	 * @param conn
	 * @param st
	 * @param rs
	 */
	public static void release(Connection conn , Statement st , ResultSet rs){
		closeRs(rs);
		closeSt(st);
		closeConn(conn);
	}
	public static void release(Connection conn , Statement st){
		closeSt(st);
		closeConn(conn);
	}

	
	private static void closeRs(ResultSet rs){
		try {
			if(rs != null){
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			rs = null;
		}
	}
	
	private static void closeSt(Statement st){
		try {
			if(st != null){
				st.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			st = null;
		}
	}
	
	private static void closeConn(Connection conn){
		try {
			if(conn != null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			conn = null;
		}
	}
}

Account.java

package com.zhujunwei.domain;

public class Account {
	private String name ;
	private int money ;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	@Override
	public String toString() {
		return "Account [name=" + name + ", money=" + money + "]";
	}
}

DbUtilsDemo.java

package com.zhujunwei;

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

import javax.sql.DataSource;
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 com.zhujunwei.domain.Account;
import com.zhujunwei.util.C3P0Util;


public class DbUtilsDemo {
	
	/**
	 * 插入操作
	 */
	public void testInsert() {
		try {
			DataSource dataSource = C3P0Util.getDataSource();
			QueryRunner queryRunner = new QueryRunner(dataSource);
			
			String sql = "insert into account values(null,?,?)";
			queryRunner.update(sql , "mm", 111);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 删除操作
	 */
	public void testDelete() {
		try {
			DataSource dataSource = C3P0Util.getDataSource();
			QueryRunner queryRunner = new QueryRunner(dataSource);
			
			String sql = "delete from account where name = ?";
			queryRunner.update(sql , "mm");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 修改操作
	 */
	public void testUpdate() {
		try {
			DataSource dataSource = C3P0Util.getDataSource();
			QueryRunner queryRunner = new QueryRunner(dataSource);
			
			String sql = "update account set money = ? where name = ?";
			queryRunner.update(sql , 9999, "a");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 查询操作:查询单条记录
	 */
	public void testSelectOne() {
		try {
			DataSource dataSource = C3P0Util.getDataSource();
			QueryRunner queryRunner = new QueryRunner(dataSource);
			
			String sql = "select * from account where name = ?";
			Account account = queryRunner.query(sql, new BeanHandler<Account>(Account.class), "a");
			System.out.println(account.toString());
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 查询操作:查询多条记录
	 */
	@Test	
	public void testSelectMany() {
		try {
			DataSource dataSource = C3P0Util.getDataSource();
			QueryRunner queryRunner = new QueryRunner(dataSource);
			
			String sql = "select * from account";
			List<Account> list = queryRunner.query(sql, new BeanListHandler<Account>(Account.class));
			for (Account account : list) {
				System.out.println(account.toString());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的数据库连接对象 而不像php asp那样 费时费力的不断重复的构建和析构这样的对象 DBUtils包括3个包: org apache commons dbutils org apache commons dbutils handlers org apache commons dbutils wrappers DBUtils封装了对JDBC的操作 简化了JDBC操作 可以少写代码 org apache commons dbutils DbUtils 关闭链接等操作 QueryRunner 进行查询的操作 org apache commons dbutils handlers ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List List中存放的是Object[] BeanHandler :将ResultSet中第一行的数据转化成类对象 BeanListHandler :将ResultSet中所有的数据转化成List List中存放的是类对象 ColumnListHandler :将ResultSet中某一列的数据存成List List中存放的是Object对象 KeyedHandler :将ResultSet中存成映射 key为某一列对应为Map Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map映射 MapListHandler :将ResultSet中所有的数据存成List List中存放的是Map ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object org apache commons dbutils wrappers SqlNullCheckedResultSet :对ResultSet进行操作 改版里面的值 StringTrimmedResultSet :去除ResultSet中中字段的左右空格 Trim ">1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的 [更多]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值