package com.hr.Dao;
import java.awt.image.ConvolveOp;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.sun.jmx.snmp.Timestamp;
public class goodsDBDao {
//添加语句
public int insert(Object obj ){
int state = 0 ;
Connection con = BaseDao.getcon();
PreparedStatement pst = null;
StringBuffer sb = new StringBuffer("insert into ");
//1.获得类对象
Class c = obj.getClass();
//2.获得表名
String tableName = c.getSimpleName();
sb.append(tableName);
//3.拼接values关键词
sb.append("values(seq_");
//4.拼接序列名
sb.append(tableName + ".nextval");
//5.拼接(问号数量应该和除主键外其他属性的数量一致)
Field[] fields = c.getDeclaredFields();
//下标从一开始,因为主键一般自增
for (int i = 0; i < fields.length; i++) {
sb.append(",?");
}
sb.append(")");
System.out.println("SQL:"+sb.toString());
//6.创建预编译对象发送sql语句
try {
pst = con.prepareStatement(sb.toString());
//7.解锁数组中所有的属性
AccessibleObject.setAccessible(fields, true);
//8.为sql语句中的?赋值
for (int i = 1; i < fields.length; i++) {
Field f = fields[i];
Object value =f.get(obj);
pst.setObject(i, value);
}
state = pst.executeUpdate
万能dao方法(增删改查)
最新推荐文章于 2022-04-19 20:00:03 发布