利用泛型封装DAO层(万能DAO)

利用泛型封装DAO层(万能DAO)


package com.cdsxt.base;

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

import com.cdsxt.po.Person;
import com.cdsxt.util.DBUtil;

//泛型方法
public class BaseDao2 {
	//传入po 根据po的值  返回匹配的list
	public static   List  queryList(String sql,Object[] params,T t){
		Class clazz=t.getClass();
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		List list=new ArrayList();
		try {
			conn=DBUtil.getConn();
			ps=conn.prepareStatement(sql);
			//填坑
			if(params!=null&¶ms.length>0){
				for(int i=0;i T queryPo(String sql,int id,T t){
		Class clazz=t.getClass();
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		T obj=null;
		try {
			conn=DBUtil.getConn();
			ps=conn.prepareStatement(sql);
			ps.setInt(1, id);
			rs=ps.executeQuery();
			ResultSetMetaData metaData=rs.getMetaData();
			int count=metaData.getColumnCount();
			obj=(T)clazz.newInstance();
			while(rs.next()){
				for(int i=0;i0){
				for(int i=0;i list=BaseDao2.queryList("select * from person ", null, new Person());
//		System.out.println(list.size());
		Person person=queryPo("select * from person where id=?",4,new Person());
		System.out.println(person.getName());
	}
}


后面的main()方法为测试用,用的时候将其删除即可


2.DBUtil类:



package com.cdsxt.utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;


public class DBUtil {
	private static String mysqlDriver;
	private static String url;
	private static String user;
	private static String password;
	static{
		try {
			InputStream is=DBUtil.class.getResourceAsStream("/db.properties");
			Properties ps=new Properties();
			ps.load(is);
			mysqlDriver=ps.getProperty("mysqlDriver");
			url=ps.getProperty("url");
			user=ps.getProperty("user");
			password=ps.getProperty("password");
			Class.forName(mysqlDriver);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//获取数据库连接
	public static Connection getConn(){
		Connection conn=null;
		try {
			conn= DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("获取数据库链接异常");
		}
		return conn;
	}
	
	//关闭资源
	public static void close(Object...objs){
		if(objs!=null&&objs.length>0){
			for(int i=0;i

你可能感兴趣的:(Web)