JDBC封装

导入jar包,buildPath

在项目的根目录下创建lib文件夹,把.jar文件复制粘贴到lib中,右击buildpath.

在这里插入图片描述

配置文件

在这里插入图片描述

DBPro

public class DBPro {
	public static final String DRIVER = "driver";
	public static final String URL = "url";
	public static final String UNAME = "uname";
	public static final String PWD = "pwd";
}

DBUtil

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBUtil {
	private static Properties pro = null;
	
	private static String driver = DBPro.DRIVER;
	private static String url = DBPro.URL;
	private static String uname = DBPro.UNAME;
	private static String pwd = DBPro.PWD;
	
	static {
		try {
			//通过pro加载
			pro = new Properties();
			InputStream is = new FileInputStream("src/DBConfig.properties");
			pro.load(is);
			driver = getValue(driver);
			url = getValue(url);
			uname = getValue(uname);
			pwd = getValue(pwd);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, uname, pwd);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	public static Statement getStmt(Connection conn) {
		Statement stmt = null;
		try {
			stmt = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return stmt;
	}
	private static void CloseConn(Connection conn) {
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	private static void CloseStmt(Statement stmt) {
		if(stmt!=null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	private static void CloseRs(ResultSet rs) {
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	public static void CloseAll(Connection conn,Statement stmt,ResultSet rs) {
		CloseConn(conn);
		CloseStmt(stmt);
		CloseRs(rs);
	}
	public static String getValue(String key) {
		if("".equals(key)||key==null) {
			throw new RuntimeException("传入的key有误"+key+"===");
		}
		return pro.getProperty(key);
	}
}

BaseDap

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class BaseDao {
	
	public static <T> T  queryOne(String sql,Class<T> clz,Object...objs) {
		return queryAll(sql,clz,objs).get(0);
	}
	
	public static <T> List<T> queryAll(String sql,Class<T> clz,Object...objs){
		List<T> ls = new ArrayList<>();
		
		//连接声明
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		conn = DBUtil.getConn();
		try {
			pstmt = conn.prepareStatement(sql);
			if(null==objs) {
				throw new RuntimeException("参数有误");
			}
			//设置绑定变量
			for(int i =0;i<objs.length;i++) {
				pstmt.setObject(i+1,objs[i]);
			}
			//发送sql
			rs = pstmt.executeQuery();
			
			while(rs.next()) {
				T t = getObject(rs,clz);
				ls.add(t);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.CloseAll(conn, pstmt, rs);
		}
		return ls;
	}
	private static <T> T getObject(ResultSet rs,Class<T> clz) {
			T t = null;
			//获取对象
			try {
				t = clz.newInstance();
				Field[] fs = clz.getDeclaredFields();
				for(Field f:fs) {
					f.setAccessible(true);
					try {
						f.set(t, rs.getObject(f.getName()));
					} catch (IllegalArgumentException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					f.setAccessible(false);
				}
			} catch (InstantiationException | IllegalAccessException e) {
				e.printStackTrace();
			}
			return t;
		}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值