1. 程式人生 > >DbUtils,一個替代JDBC的小工具類

DbUtils,一個替代JDBC的小工具類

在使用之前需要有一些準備,我使用的是mysql資料庫

這裡建立的就是一個測試類,中間使用的註釋@Test就類似於main函式,可以直接右擊run as————》JUnit Test就可以執行,但是提前是你要有 import org.junit.Test這個包

package com.qf.test;

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

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.qf.entity.Student;

//測試類
public class MyTest1 {

	// 單元測試---實現增刪改
	/*
	 * 單元測試方法要求: 1、public修飾 2、無返回值 3、無形式引數
	 */
	@Test
	public void test1() throws SQLException {
		// 建立操作物件
		QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
		// 新增
		// 執行非查詢語句,返回受影響的行數
		// System.out.println("新增:"+qr.execute("insert into
		// tb_student(name,age,sex) values(?,?,?)", "李四",21,"男"));
		// 修改
		// System.out.println("修改:"+qr.execute("update tb_student set name=?
		// where id=?", "小四",2));
		// 刪除
		System.out.println("刪除:" + qr.execute("delete from tb_student  where id=?", 1));
	}

	// 查詢--原生介面
	@Test
	public void test2() throws SQLException {
		// 執行查詢
		QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
		// 原生的,直接使用內部的介面完成結果集的賦值
		Student stu = qr.query("select * from tb_student where id=2", new ResultSetHandler<Student>() {

			@Override
			public Student handle(ResultSet rs) throws SQLException {
				// TODO Auto-generated method stub

				Student student = new Student();
				if (rs.next()) {
					student.setAge(rs.getInt("age"));
					student.setId(rs.getInt("id"));
					student.setName(rs.getString("name"));
					student.setSex(rs.getString("sex"));

				}
				return student;
			}
		});
		System.out.println(stu.getName());
	}

	// 查詢--預設實現,支援物件
	@Test
	public void test3() throws SQLException {
		// 執行查詢
		QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
		// 執行查詢,單個物件,需要傳遞對應類的Class物件
		Student stu = qr.query("select * from tb_student where id=2", new BeanHandler<>(Student.class));
		System.out.println("查詢單個:" + stu.getName());
	}

	// 新增--批處理,支援多個數據新增操作
	@Test
	public void test4() throws SQLException {
		// 執行查詢
		QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
		// sql語句
		String sql = "insert into tb_student(name,age,sex) values(?,?,?)";
		Object[][] vs = new Object[10][3];
		for (int i = 0; i < vs.length; i++) {
			vs[i][0] = "麻子" + i;
			vs[i][1] = i * 10;
			vs[i][2] = "女";
		}
		// 執行批處理,返回每條語句的受影響的行數
		int[] cs = qr.batch(sql, vs);
		System.out.println(Arrays.toString(cs));
	}
	//查詢--返回多條資料---集合
	@Test
	public void test5() throws SQLException {
		// 執行查詢
		QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
		List<Student> list=qr.query("select * from tb_student",
				new BeanListHandler<>(Student.class));
		for(Student s:list){
			System.out.println(s.getName());
		}
		
	}

}

這是最後資料庫的顯示結果