使用DBUtils第三方工具類,實現MySQL資料庫的增刪改查
阿新 • • 發佈:2018-12-27
DBUtuls第三方工具類
使用到的有:
1.ResultSetHandler介面
結果集處理介面
2.QueryRunner類
完成資料庫的增/刪/改/查
3.DbUtils類
定義關閉資源與事物處理方法
1.自定義JDBC工具類與配置檔案,實現資料庫的連線
pro.properties配置檔案
DriverPath=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydatabase
username=root
password=123
JDBCUtils 自定義工具類
package DBUitlsDemo;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
/**
* JDBC工具類
* Created by Aongi on 2017/5/1.
* Version 1.0
*/
public class JDBCUtils {
public JDBCUtils(){}
private static Connection CON;
static{
FileReader reader;
try {
String a=JDBCUtils.class.getResource("pro.properties").toString().substring(6);
reader = new FileReader(a);
//下面也是一種拿到檔案路徑的方式
//InputStream reader=JDBCUtils.class.getClassLoader().getResourceAsStream("pro.properties");
Properties pro = new Properties();
pro.load(reader);
reader.close();
Class.forName(pro.getProperty("DriverPath" ));
CON= DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("username"),pro.getProperty("password"));
} catch (Exception e) {
throw new RuntimeException("連線資料庫失敗!");
}
}
/*
*連結資料庫操作,返回Connection物件
*/
public static Connection getConnection(){
return CON;
}
}
2.定義與資料庫匹配的實體類:Students
1.私有變數對應資料庫的列
2.必須有空參構造方法
3.get/set方法
4.重寫toString方法
package DBUitlsDemo;
/**
* Created by Aongi on 2017/5/2.
* Version 1.0
*/
public class Students {
private Integer uid;
private String uname;
private String uaddress;
private Integer age;
public Students(Integer uid, String uname, String uaddress, Integer age) {
this.uid = uid;
this.uname = uname;
this.uaddress = uaddress;
this.age = age;
}
public Students(){}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUaddress() {
return uaddress;
}
public void setUaddress(String uaddress) {
this.uaddress = uaddress;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return uid + "\t" + uname + "\t" + uaddress + "\t" + age;
}
}
3.實現增刪改查類:QueryRunnerDemo
1.增加/修改/刪除,寫到了一個方法裡,傳入兩個引數
String sql SQL語句
Object[] params SQL語句中的?佔位符陣列集
2.查詢資料-----8中結果集處理方式
1.ArrayHandler 查詢------取單行遍歷
2.ArrayListHandler 查詢------取多行遍歷
3.BeanHandler 查詢------取單行遍歷
4.BeanListHandler 查詢------取多行遍歷
5.MapHandler 查詢------取單行遍歷
6.MapListHandler 查詢------取多行遍歷
7.ColumnListHandler 查詢列資料
8.ScalarHandler 查詢單個數據
package DBUitlsDemo;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
/**
* Created by Aongi on 2017/5/2.
* Version 1.0
*/
public class QueryRunnerDemo {
private static Connection CON = JDBCUtils.getConnection();
//資料的增加,修改,刪除
public static void addUpdataDelete(String sql, Object[] params) throws Exception {
QueryRunner qr = new QueryRunner();
int i = qr.update(CON, sql, params);
DbUtils.close(CON);
System.out.println(i + "條語句執行成功");
}
//main方法
public static void main(String[] args) throws Exception {
/**
* 增加資料
*/
// String sql="INSERT INTO users (uname,uaddress,age) VALUES (?,?,?);";
// Object[] params={"小李","guangzhou","30"};
// addUpdataDelete(sql,params);
/**
* 修改資料
*/
// String sql="UPDATE users SET uname=?,uaddress=?,age=? WHERE uid=?;";
// Object[] params={"小趙","chengdu","28","10"};
// addUpdataDelete(sql,params);
/**
* 刪除資料
*/
// String sql="DELETE FROM users WHERE uid=?;";
// Object[] params={"10"};
// addUpdataDelete(sql,params);
/**
* 查詢資料---8種結果集處理方式
*/
select();
}
/**
* 多種方式---資料的查詢
*/
public static void select() throws Exception {
arrayHandler();//ArrayHandler查詢
System.out.println("--------------------------------------------------");
arrayListHandler();//ArrayListHandler查詢
System.out.println("--------------------------------------------------");
beanHandler();//BeanHandler查詢
System.out.println("--------------------------------------------------");
beanListHandler();//BeanListHandler查詢
System.out.println("--------------------------------------------------");
columnListHandler();//ColumnListHandler查詢
System.out.println("--------------------------------------------------");
mapHandler();//MapHandler查詢
System.out.println("--------------------------------------------------");
mapListHandler();//MapListHandler查詢
System.out.println("--------------------------------------------------");
scalarHandler();//ScalarHandler查詢
}
/**
* ArrayHandler查詢-----取一行遍歷
*/
public static void arrayHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users WHERE uid=4;";
Object[] data = qr.query(CON, sql, new ArrayHandler());
for (Object obj : data) {
System.out.print(obj + "\t");
}
System.out.println();
}
/**
* ArrayListHandler查詢------取多行遍歷
*/
public static void arrayListHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users WHERE uid>4;";
List<Object[]> data = qr.query(CON, sql, new ArrayListHandler());
for (Object[] obj : data) {
for (Object o : obj) {
System.out.print(o + "\t");
}
System.out.println();
}
}
/**
* BeanHandler查詢------取一行遍歷
* 實體類必須要有空參構造方法
*/
public static void beanHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users WHERE uid=4;";
Students stu = qr.query(CON, sql, new BeanHandler<Students>(Students.class));
System.out.println(stu);
}
/**
* BeanListHandler查詢------取多行遍歷
* 實體類必須要有空參構造方法
*/
public static void beanListHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users WHERE uid>4;";
List<Students> stulist = qr.query(CON, sql, new BeanListHandler<Students>(Students.class));
for (Students stu : stulist) {
System.out.println(stu);
}
}
/**
* ColumnListHandler查詢列資料
* 注意:sql查詢語句裡查詢的資料必須包含你想要查詢的列資料
*/
public static void columnListHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users;";
List<Object> uname = qr.query(CON,sql,new ColumnListHandler<Object>("uname"));
for (Object obj : uname){
System.out.print(obj + "\t");
}
System.out.println();
}
/**
* MapHandler查詢 -----取單行遍歷
* 這裡用到了Map集合的遍歷
*/
public static void mapHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users WHERE uid=4;";
Map<String,Object> map= qr.query(CON,sql,new MapHandler());
for(String key: map.keySet()){
System.out.print(key+"="+map.get(key)+"\t");
}
System.out.println();
}
/**
* MapListHandler查詢-----取多行遍歷
* 取出的結果是有序的,繼承自LinkedHashMap<String,Object>類
*/
public static void mapListHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM users WHERE uid>4;";
List<Map<String,Object>> list= qr.query(CON,sql,new MapListHandler());
for (Map<String,Object> map:list){
for(String key: map.keySet()){
System.out.print(key+"="+map.get(key)+"\t");
}
System.out.println();
}
}
/**
* ScalarHandler查詢 ----- 單個數據
* ScalarHandler<Object>泛型最好是Object型別
*/
public static void scalarHandler() throws SQLException{
QueryRunner qr = new QueryRunner();
String sql = "SELECT COUNT(*) FROM users";
Object uname=qr.query(CON,sql,new ScalarHandler<Object>());
System.out.println(uname);
}
}