`
zzzzzz5530041
  • 浏览: 34299 次
  • 性别: 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();
		}
	}
	 
}


分享到:
评论

相关推荐

    JDBC封装的工具类

    JDBC封装的工具类,将所有共同的代码提取过来,形成工具类

    jdbc封装(实现对实体的增删改查[分页]).zip

    jdbc封装(实现对实体的增删改查[分页]),辅助学习Hibernate 包含三个文件夹,分别是: code-access实现 是用access实现的,本意是access方便,就一个文件,方便部署。但access有好多不支持,就写成这样.主要是可参考Dao...

    JDBC封装步骤

    文档脉络清楚的详述了实现JDBC封装所需要进行的步骤。

    JDBC封装类

    标题:JDBC封装类 描述:此文章将详细介绍一个用于简化Java中JDBC操作的封装类,该类通过提供一系列方法来加速数据库编程任务,包括建立数据库连接、执行查询、处理结果集以及执行更新操作。 ### 一、JDBC封装类...

    jdbc封装工具类

    jdbc封装工具类,此类事封装成list,Object&gt;&gt;格式,可直接把转换为jsonArray格式传输数据。

    jdbc封装包

    【标题】:JDBC封装包 【描述】:JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。这个封装包是我个人制作的,旨在简化...

    JDBC封装.rar

    "JDBC封装"是指将常见的数据库操作,如增删改查(CRUD:Create, Read, Update, Delete),进行模块化和抽象化的过程,以便于在代码中重复使用和简化数据库交互。下面将详细介绍JDBC封装的原理、步骤以及它带来的好处...

    JDBC封装类升级版,支持DBCP、C3P0连接池,Java连接数据库带例子

    Java JDBC封装类升级版,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类...

    自己写个JDBC封装

    **标题:“自己写个JDBC封装”** 在Java开发中,JDBC(Java Database Connectivity)是连接Java应用程序和关系数据库的标准接口。然而,原始的JDBC API使用起来相对繁琐,需要编写大量的重复代码,例如建立数据库...

    java增删改查JDBC封装类(泛型封装)

    "java增删改查JDBC封装类(泛型封装)"这个主题是关于如何利用泛型来优化JDBC操作,以提高代码的可读性、安全性和复用性。以下将详细讲解这个主题涉及的知识点。 1. **JDBC基础**: - JDBC是Java中连接数据库的标准...

    jdbc-utils.rar_Utils_jdbc_jdbc封装

    "jdbc-utils.rar_Utils_jdbc_jdbc封装"这个压缩包提供了一些工具类,用于简化JDBC操作,提高代码的可读性和可维护性。下面我们将详细探讨JDBC封装处理类的原理和实现。 1. **JDBC基础** - JDBC API包括一组Java...

    Scala的JDBC封装包Scweery.zip

    Scweery 是 Scala 一个封装了 JDBC 操作用来从 SQL 中创建 Scala 对象的工具包。 示例代码: using(petsDB) { connection =&gt; val findHogsQuery = "select name, gender from pets where family='erinaceidae' ...

    DB.rar_jdbc封装

    本压缩包“DB.rar_jdbc封装”显然是一个关于如何使用Java JDBC进行数据库连接封装的示例或教程。下面我们将详细探讨JDBC以及如何进行封装。 首先,JDBC是Java平台上的一个接口,它允许Java应用程序与各种数据库进行...

    原创的JDBC封装可支持各种数据库

    在实际应用中,这些步骤往往重复且繁琐,因此进行JDBC封装是提高代码复用性和减少错误的有效方式。 1. **加载驱动**: 在Java程序中,我们需要通过Class.forName()方法加载对应的数据库驱动。封装时,我们可以将...

    类似hibernate的jdbc封装

    标题提到的"类似hibernate的jdbc封装"就是这样的一个实践,它试图在不引入庞大框架的情况下,提供类似Hibernate的便捷性。 首先,我们来了解JDBC(Java Database Connectivity),它是Java中用于连接数据库的标准...

    Java连接数据库 JDBC封装类 带使用例子

    Java JDBC封装类,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类使用。

    自己封装的小框架--JDBC封装 Action层封装 手动事务管理

    本项目中,"自己封装的小框架--JDBC封装 Action层封装 手动事务管理"是一个实用的实践案例,旨在提高开发效率,优化代码结构,并确保数据操作的完整性。下面我们将深入探讨这个框架中的主要组成部分及其相关知识点。...

    java注解、java反射机制 jdbc 封装

    在JDBC封装中,反射非常有用,因为它允许在运行时创建和执行SQL语句,而不必在代码中硬编码具体的数据库操作。例如,你可以使用反射来获取类的字段信息,然后动态生成对应的SET和WHERE子句,以此实现通用的CRUD...

    jdbc 封装例子 servlet

    总之,JDBC封装是Java Web开发中的常见实践,它提高了代码的可读性和可维护性,减少了错误发生的可能性。在实际项目中,我们还应该结合使用数据库连接池、DAO模式以及事务管理等技术,以实现更高效、安全的数据库...

Global site tag (gtag.js) - Google Analytics