DbUtils框架使用示例

DbUtils框架概述

为更加简单且高效地使用JDBC,Apache组织提供了数据库操作工具类commons-dbutils。该工具对JDBC进行了封装,可极大地简化JDBC的编码工作量。例如:DbUtils在查询数据时可把结果转换成List,Array,Set等集合,非常便于开发人员操作。若需使用该工具,请在官方网站免费下载即可。

DbUtils操作简单,功能强大;其中,它的大部分功能都由以下三大核心实现:
DbUtils工具类 该类主要用于关闭连接、装载JDBC驱动程序等等
ResultSetHandler接口 该接口及其实现类主要用于处理结果集
QueryRunner类 该类主要用于增,删,改,查

DbUtils 简易封装

package com.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 DBUtil {
	//创建数据库连接池
	private static DataSource dataSource = new ComboPooledDataSource();
	
	//获取数据库连接池
	public static DataSource getDataSource() {
		return dataSource;
	}
	
	//创建连接
	public static Connection getConnection() {
		try {
			return dataSource.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	 //释放连接
    public static void releaseConnection(Connection connection, Statement statement, ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            resultSet = null;
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            statement = null;
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            connection = null;
        }
    }
	
}

使用示例

数据库表:

DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb; 
create table goddess(
 id int primary key auto_increment,
 username varchar(40),
 password varchar(40),
 cardid varchar(40),
 money int(10)
 );
insert into goddess (cardid,username,password,money) values("65313456","ljx","123456",6000);

JavaBean:

package com.ycy4;

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.util.DBUtil;
import com.ycy4.Card;

public class Card {
	private String idcard;
	private String username;
	private String password;
	private int money;
	public Card() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Card( String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}
	public String getIdcard() {
		return idcard;
	}
	public void setIdcard(String idcard) {
		this.idcard = idcard;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	
	//检查账户
	public boolean check(String username,String password) throws SQLException {
		boolean result = false;
		QueryRunner queryRunner = new QueryRunner(DBUtil.getDataSource());
		String sql = "select * from goddess";
		BeanListHandler<Card> beanListHandler = new BeanListHandler<>(Card.class);
		List<Card> query = queryRunner.query(sql, beanListHandler);
		for(Card card : query) {
			if((username.equals(card.getUsername())&&password.equals(card.getPassword()))) {
				result = true;
				break;
			}else {
				result = false;
			}
		}
		return result;
		
		
	}
	
	//查询账户余额
	public String selectMoney(String username,String password) throws SQLException {
		if(check(username, password)) {
			QueryRunner queryRunner = new QueryRunner(DBUtil.getDataSource());
			String sql = "select * from goddess where username = ?";
			Object[] param = {username};
			BeanHandler<Card> beanHandler = new BeanHandler<>(Card.class);
			Card card = queryRunner.query(sql, beanHandler, param);
			int money = card.getMoney();
			String str1 = "账户余额为:" + money;
			return str1;
		}else {
			String str2 = "账号或密码错误!";
			return str2;
		}
	}
	
	//存钱
	public String saveMoney(String username,String password,int money) throws SQLException {
		
		if(check(username, password)) {
			QueryRunner queryRunner = new QueryRunner(DBUtil.getDataSource());
			String sql = "update goddess set money = money + ? where username = ?";
			Object[] params = {money,username};
			queryRunner.update(sql, params);
			String select = selectMoney(username, password);
			String str1 = "存入" + money + " " +  select;
			return str1;
		}else {
			String str2 = "账号或密码错误!";
			return str2;
		}
		
	}
	//取钱
	public String removeMoney(String username,String password,int money) throws SQLException {
		
		if(check(username, password)) {
			QueryRunner queryRunner = new QueryRunner(DBUtil.getDataSource());
			String sql = "update goddess set money = money - ? where username = ?";
			Object[] params = {money,username};
			queryRunner.update(sql, params);
			String select = selectMoney(username, password);
			String str1 = "取出" + money + " " + select;
			return str1;
		}else {
			String str2 = "账号或密码错误!";
			return str2;
		}
		
	}
	
}

测试类:

package com.ycy4;

import java.sql.SQLException;

public class Test01 {
	public static Card card = new Card("sx", "123654");
	
	public static void main(String[] args) throws SQLException {
		Test01.select();
		//Test01.saveMoney(520);
		//Test01.removeMoney(2000);
		
	}
	public static void select() throws SQLException {
		String selectMoney = card.selectMoney(card.getUsername(), card.getPassword());
		System.out.println(selectMoney);
	}
	
	public static void saveMoney(int money) throws SQLException {
		String saveMoney = card.saveMoney(card.getUsername(),card.getPassword(), money);
		System.out.println(saveMoney);
	}
	
	public static void removeMoney(int money) throws SQLException {
		String removeMoney = card.removeMoney(card.getUsername(), card.getPassword(), money);
		System.out.println(removeMoney);
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值