jdbc简易泛型dao(一)

2014-11-24 11:47:29 · 作者: · 浏览: 48
一、实现思路
1、定义3个Annotation(注解):Entity、Id、Column,Entity作用于Type级别,用于标识JavaBean与数据库表名的映射关系。Id作用于Field级别,用于标识JavaBean中ID属性与表中ID字段的映射关系,Column作用于Field级别,用于标识JavaBean中除ID属性外的其它属性与表中字段的映射关系。
2、在Dao实现类中,通过反射API获得JavaBean中注解和属性的信息,如:表名、字段。JavaBean属性的名称、数据类型等信息。然后将这些信息拼接成一条SQL语句,通过JDBC的方式与数据库交互。
二、示例代码
1、定义一个Dao公共类,提供获得数据库连接与释放数据库资源的接口
[java]
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 提供获取数据库连接、释放资源的接口
*/
public class JdbcDaoHelper {
/**
* 数据库用户名
*/
private static final String USER = "test";
/**
* 数据库密码
*/
private static final String PASSWORD = "test";
/**
* 连接数据库的地址
*/
private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:study";
private static Connection conn;
/**
* 获得一个数据库连接对象
* @return java.sql.Connection实例
*/
public static Connection getConnection() {
try {
if (conn == null) {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} else {
return conn;
}
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 释放数据库资源
*/
public static void release(PreparedStatement ps,ResultSet rs) {
try {
if (conn != null) {
conn.close();
conn = null;
}
if (ps != null) {
ps.close();
ps = null;
}
if (rs != null) {
rs.close();
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2、定义一个泛型Dao接口GenericDao
[java]
package dao;
import java.util.List;
import java.util.Map;
public interface GenericDao {
public void save(T t) throws Exception;
public void delete(Object id,Class clazz) throws Exception;
public void update(T t) throws Exception;
public T get(Object id,Class clazz) throws Exception;
/**
* 根据条件查询
* @param sqlWhereMap key:条件字段名 value:条件字段值
* @param clazz
* @return
* @throws Exception
*/
public List findAllByConditions(Map sqlWhereMap,Class clazz) throws Exception;
}
3、定义GenericDao接口JDBC实现类JdbcGenericDaoImpl
[java]
package dao;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import annotatio