免费网站建设模版下载,鞍山网站建设制作,flash网站模板下载,网站开发经营范围V_1.0 需求#xff1a;开发一个工具方法#xff0c;辅助初级程序员在不需要掌握sql命令和JDBC的情况下#xff0c;实现对数据库的插入操作。 V_4.0 实现0sql插入操作需要解决的问题. 1. 如何确认当前【陌生对象】关联的【表名】 2. 如何确认当前表中需要添加数据的字段 3. …V_1.0 需求开发一个工具方法辅助初级程序员在不需要掌握sql命令和JDBC的情况下实现对数据库的插入操作。 V_4.0 实现0sql插入操作需要解决的问题. 1. 如何确认当前【陌生对象】关联的【表名】 2. 如何确认当前表中需要添加数据的字段 3. 如何将对象中数据和表中字段做一个一一对应 V_5.0 解决方案 【实体类映射文件】描述某一个实体类与表的对象关系。 通过这个文件了解当前类关联的【表名称】 通过这个文件了解当前【表】和当前【对象】的字段和属性对应关系 工具类实现:
public class ReflectUtil {/*** 步骤:* 1.将xml文件和实体类对象加载到内存中* 2.将obj对象中数据生成插入sql命令* param obj 实体对象* param xmlPath 实体对象和数据库表映射xml表*/public static void save(Object obj,String xmlPath) throws Exception{//0.局部变量String xPath ; Connection con null;PreparedStatement ps null;String sql;String sql_vvalues (;//1.将xml文件和实体类对象加载到内存中SAXReader reader new SAXReader();Document doc reader.read(xmlPath);Class clazz obj.getClass();//2.将obj对象中数据生成插入sql命令//2.1 获得要插入的表名xPath //table;Attribute e_table (Attribute) doc.selectSingleNode(xPath);String tableName e_table.getValue();//2.2 jdbc连接数据库Class.forName(com.mysql.jdbc.Driver);con DriverManager.getConnection(jdbc:mysql://localhost:3306/databases, root, root);sql insert into tableName(;Field[] fields clazz.getDeclaredFields();//拼接sql语句for(int i0;ifields.length;i){Field fieldObj fields[i];String fieldName fieldObj.getName();//从xml中查找该field对应的数据类型xPath //property[namefieldName];Element ele_f (Element) doc.selectSingleNode(xPath);String colName ele_f.attribute(colName).getValue();if(ifields.length-1){sqlcolName);sql_v?);}else{sqlcolName,;sql_v?,;}}sqlsql_v;//预编译pscon.prepareStatement(sql);//预编译对象赋值for(int i0;ifields.length;i){Field fieldObj fields[i];String fieldName fieldObj.getName();//从xml中查找该field对应的数据类型xPath //property[namefieldName];Element ele_f (Element) doc.selectSingleNode(xPath);//获得列对应的数据类型String colType ele_f.attribute(colType).getValue();//获取权限fieldObj.setAccessible(true);//从实体类对象中获得值Object valueObj fieldObj.get(obj);if(int.equals(colType)){ps.setInt(i1, (Integer)valueObj);}else if(varchar.equals(colType)){//Stringps.setString(i1, (java.lang.String)valueObj);}else if(double.equals(colType)){ps.setDouble(i1, (Double)valueObj);}else if(date.equals(colType)){//mysql中支持将一个字符串赋值给日期类Date data (Date)valueObj;SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);ps.setString(i1, sdf.format(data));}}int count ps.executeUpdate();}
}
表和实体类映射文件:
?xml version1.0 encodingUTF-8?
beansbean classPathcom.xiehe.entily.DeptVO tabledeptproperty namedeptNo typeint colNameDEPTNO colType int/propertyproperty namedName typejava.lang.String colNameDNAME colTypevarchar/propertyproperty nameloc typejava.lang.String colNameLOC colTypevarchar/property/bean
/beans转载于:https://www.cnblogs.com/he-shao/p/6068309.html