日期:2014-05-16 浏览次数:20573 次
package project02_Order_management.dao;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BaseDao {
/**
* 查询所有数据方法
*/
public static List findAll(Object obj, Connection conn) throws Exception {
// 获取要操作对象的类
Class clazz = obj.getClass();
// 获取传入实体的所有方法;
Method[] methods = clazz.getDeclaredMethods();
// 获取传入实体中的所有的属性
Field[] fields = clazz.getDeclaredFields();
// 建立结果集List接收对象
List list = new ArrayList();
// 创建查询的sql语句;
String sql = "select * from "
+ obj.getClass().getSimpleName().toLowerCase();
System.out.println(sql);
// System.out.println(sql);
// 预编译sql语句
PreparedStatement preparedStatement = conn.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
// 从结果集中循环取出放入结果集List
while (resultSet.next()) {
// 查询的结果的接受对象
Object entity = clazz.newInstance();
// 循环类中的属性,进行复制操作
for (int i = 0; i < fields.length; i++) {
// 获取属性名称
String fieldName = fields[i].getName();
// 获取result结果集中的每个结果字段的对象
Object fieldObject = resultSet.getObject(i + 1);
if (fieldObject == null) {
fieldObject = "null";// 防止数据为null时引发空指针异常
}
for (int j = 0; j < methods.length; j++) {
// 比对属性名加上set后与方法名是否一致,进行对应的属性用对应的方法进行复制操作
if (("set" + fieldName).equalsIgnoreCase(methods[j]
.getName())) {
// 执行传入对象的指定的方法
methods[j].invoke(entity,
resultSet.getObject(fieldName));
}
}
}
list.add(entity);
}
return list;
}
/**
* 根据id查询数据
*
* @throws SQLException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws InvocationTargetException
* @throws IllegalArgumentException
*/
public static Object findById(Object obj, Integer id, Connection conn)
throws SQLException, InstantiationException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException {
// 获取要操作对象的类
Class clazz = obj.getClass();
// 获取传入实体的所有方法;
Method[] methods = clazz.getDeclaredMethods();
// 获取传入实体中的所有的属性
Field[] fields = clazz.getDeclaredFields();
// 查询的结果的接受对象
Object entity = null;
// 创建查询的sql语句;
String sql = "select * from " + clazz.getSimpleName().toLowerCase()
+ " where id=?";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1, id);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
// 根据获取的实体的类,创建实体
entity = clazz.newInstance();
// 循环类中的属性,进行复制操作
for (int i = 0; i < fields.length; i++) {
// 获取属性名称
String fieldName = fields[i].getName();
// 获取result结果集中的每个结果字段的对象
Object fieldObject = resultSet.getObject(i + 1);
if (fieldObject == null) {
fieldObject = "null";// 防止数据为null时引发空指针异常
}
for (int j = 0; j < methods.length; j++) {
// 比对属性名加上set后与方法名是否一致,进行对应的属性用对应的方法进行复制操作
if (("set" + fieldName).equalsIgnoreCase(methods[j]
.getName())) {
// 执行传入对象的指定的方法
methods[j].invoke(entity,
resultSet.getObject(fieldName));
}
}
}
}
return entity;
}
/**
* 分页数据查询
*
* @param obj
* 传入目标对象
* @param conn
* 传入数据库连接
* @param startRow
* 传入开始的行数
* @param endRow
* 传入结束的行数
*/
public static List paging(Object obj, Connection conn, Integer startRow,
Integer endRow) {
return null;
}
/**
* 保存方法
*/
public static void save(Object obj, Connection conn)
throws IllegalAccessException, IllegalArgum