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封装(实现对实体的增删改查[分页]),辅助学习Hibernate 包含三个文件夹,分别是: code-access实现 是用access实现的,本意是access方便,就一个文件,方便部署。但access有好多不支持,就写成这样.主要是可参考Dao...
文档脉络清楚的详述了实现JDBC封装所需要进行的步骤。
标题:JDBC封装类 描述:此文章将详细介绍一个用于简化Java中JDBC操作的封装类,该类通过提供一系列方法来加速数据库编程任务,包括建立数据库连接、执行查询、处理结果集以及执行更新操作。 ### 一、JDBC封装类...
jdbc封装工具类,此类事封装成list,Object>>格式,可直接把转换为jsonArray格式传输数据。
【标题】:JDBC封装包 【描述】:JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。这个封装包是我个人制作的,旨在简化...
"JDBC封装"是指将常见的数据库操作,如增删改查(CRUD:Create, Read, Update, Delete),进行模块化和抽象化的过程,以便于在代码中重复使用和简化数据库交互。下面将详细介绍JDBC封装的原理、步骤以及它带来的好处...
Java JDBC封装类升级版,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类...
**标题:“自己写个JDBC封装”** 在Java开发中,JDBC(Java Database Connectivity)是连接Java应用程序和关系数据库的标准接口。然而,原始的JDBC API使用起来相对繁琐,需要编写大量的重复代码,例如建立数据库...
"java增删改查JDBC封装类(泛型封装)"这个主题是关于如何利用泛型来优化JDBC操作,以提高代码的可读性、安全性和复用性。以下将详细讲解这个主题涉及的知识点。 1. **JDBC基础**: - JDBC是Java中连接数据库的标准...
"jdbc-utils.rar_Utils_jdbc_jdbc封装"这个压缩包提供了一些工具类,用于简化JDBC操作,提高代码的可读性和可维护性。下面我们将详细探讨JDBC封装处理类的原理和实现。 1. **JDBC基础** - JDBC API包括一组Java...
Scweery 是 Scala 一个封装了 JDBC 操作用来从 SQL 中创建 Scala 对象的工具包。 示例代码: using(petsDB) { connection => val findHogsQuery = "select name, gender from pets where family='erinaceidae' ...
本压缩包“DB.rar_jdbc封装”显然是一个关于如何使用Java JDBC进行数据库连接封装的示例或教程。下面我们将详细探讨JDBC以及如何进行封装。 首先,JDBC是Java平台上的一个接口,它允许Java应用程序与各种数据库进行...
在实际应用中,这些步骤往往重复且繁琐,因此进行JDBC封装是提高代码复用性和减少错误的有效方式。 1. **加载驱动**: 在Java程序中,我们需要通过Class.forName()方法加载对应的数据库驱动。封装时,我们可以将...
标题提到的"类似hibernate的jdbc封装"就是这样的一个实践,它试图在不引入庞大框架的情况下,提供类似Hibernate的便捷性。 首先,我们来了解JDBC(Java Database Connectivity),它是Java中用于连接数据库的标准...
Java JDBC封装类,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类使用。
本项目中,"自己封装的小框架--JDBC封装 Action层封装 手动事务管理"是一个实用的实践案例,旨在提高开发效率,优化代码结构,并确保数据操作的完整性。下面我们将深入探讨这个框架中的主要组成部分及其相关知识点。...
在JDBC封装中,反射非常有用,因为它允许在运行时创建和执行SQL语句,而不必在代码中硬编码具体的数据库操作。例如,你可以使用反射来获取类的字段信息,然后动态生成对应的SET和WHERE子句,以此实现通用的CRUD...
总之,JDBC封装是Java Web开发中的常见实践,它提高了代码的可读性和可维护性,减少了错误发生的可能性。在实际项目中,我们还应该结合使用数据库连接池、DAO模式以及事务管理等技术,以实现更高效、安全的数据库...