`
zzzzzz5530041
  • 浏览: 32935 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JDBC 封装

阅读更多
package com.;

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

import org.apache.commons.lang.StringUtils;

import com. Student;

public class BaseDao {
	private static final String DRIVER_NAME="oracle.jdbc.driver.OracleDriver";
	private static final String URL="jdbc:oracle:thin:@host:50252:cneb2d";
	private static final String USER_NAME="user";
	private static final String PASSWORD="passwd123";
	private Connection conn;
	private PreparedStatement statement ;
	private CallableStatement callableStatement ;
	public Connection getConnection()throws Exception{
		Class.forName(DRIVER_NAME) ;   
		conn =DriverManager.getConnection(URL,USER_NAME,PASSWORD);
		return conn;
	}
	public  PreparedStatement getStatement(String sql)throws Exception{
		statement = getConnection().prepareStatement(sql);
		return statement;
	}
	
	public  CallableStatement  getCallableStatement(String sql)throws Exception{
		callableStatement = getConnection().prepareCall(sql);
		return callableStatement;
	}
	public Object callFunction(String sql,Object [] params)throws Exception{
		Object obj=null;
		CallableStatement callableStatement=getCallableStatement(sql);
		if(params!=null){
			for(int i=0;i<params.length;i++){
				callableStatement.setObject(i+1, params[i]);
			}
		}
		ResultSet resultSet =callableStatement.executeQuery();
		while(resultSet.next()){
			obj = resultSet.getObject(1);
		}
		return obj;
	}
	public int updateData(String sql,Object [] params) throws Exception{
		getConnection().setAutoCommit(false);
		int rows=0;
		PreparedStatement statement = getStatement(sql);
		for(int i=0;i<params.length;i++){
			statement.setObject(i+1, params[i]);
		}
		statement.execute();
		return rows;
	}
	/**
	 * 
	 * @param sql sql statement
	 * @param params 
	 * @param cls which class should be returned
	 * @return
	 * @throws Exception
	 */
	public List searchData(String sql,Object [] params, Class cls) throws Exception{
		List list=new ArrayList();
		Object result=null;
		PreparedStatement statement = getStatement(sql);
		if(params!=null){
		for(int i=0;i<params.length;i++){
			statement.setObject(i+1, params[i]);
			}
		}
		ResultSet resultSet =statement.executeQuery();
		while(resultSet.next()){
			Field fields[] = cls.getDeclaredFields();
			Object objectCopy = cls.getConstructor(new Class[]{}).newInstance(new Object[]{});
			for(Field field:fields ){
				field.setAccessible(true);
				String fieldName = field.getName();
				Object dbValue =resultSet.getObject(fieldName);
				String setMethodName = "set"+StringUtils.capitalise(fieldName);
				Method setMethod = cls.getDeclaredMethod(setMethodName,field.getType()); 
				setMethod.invoke(objectCopy, new Object[]{dbValue});
			}
			list.add(objectCopy);
		}
		return list;
	}
	public void close() throws Exception{
		
		if(statement!=null){
			statement.close();
		}
		if(conn!=null){
			conn.close();
		}
	}
	 
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics