首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

模拟hibernate,兑现了增删改查以及按id查询

2012-08-31 
模拟hibernate,实现了增删改查以及按id查询模拟hibernate,实现了增删改查以及按id查询public class PrePar

模拟hibernate,实现了增删改查以及按id查询
模拟hibernate,实现了增删改查以及按id查询

public class PrePareSql {public static String selectSql(Class<?> obj) {String sql = "select ";Field[] fields = obj.getDeclaredFields();for (int i = 0; i < fields.length; i++) {if (i < fields.length - 1) {sql = sql + fields[i].getName() + " ,";} else {sql = sql + fields[i].getName() + " from  ";}}String tableName = getTableName(obj);sql = sql + tableName;System.out.println(sql);return sql;}public static String selectSql(Class<?> obj,String id) {String sql = "select ";Field[] fields = obj.getDeclaredFields();for (int i = 0; i < fields.length; i++) {if (i < fields.length - 1) {sql = sql + fields[i].getName() + " ,";} else {sql = sql + fields[i].getName() + " from  ";}}String tableName = getTableName(obj) + " where " + fields[0].getName() +" =  ?";sql = sql + tableName;System.out.println(sql);return sql;}public static String insertSql(Class<?> obj) {String sql = "insert into  " + getTableName(obj) +" ( ";Field[] fields = obj.getDeclaredFields();for (int i = 0; i < fields.length; i++) {if (i < fields.length - 1) {sql = sql + fields[i].getName() + " ,";} else {sql = sql + fields[i].getName() + " )  "+"values( ";}}for (int i = 0; i < fields.length; i++) {if (i < fields.length - 1) {sql=sql+"?,";}else{sql=sql+"? )";}}System.out.println(sql);return sql;}public static String deleteSql(Class<?> obj){String sql = "delete from " + getTableName(obj)+" where ";Field[] fields = obj.getDeclaredFields();for (int i = 0; i < fields.length; i++) {if (i < fields.length - 1) {sql = sql + fields[i].getName() + " = ? and ";} else {sql = sql + fields[i].getName()+" = ? ";}}   System.out.println(sql);return sql;}public static String updateSql(Class<?> obj){//UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' //UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'String sql = "update " +getTableName(obj) +" set "; Field[] fields = obj.getDeclaredFields();for (int i = 1; i < fields.length; i++) {if (i < fields.length - 1) {sql = sql + fields[i].getName() + " = ? , ";} else {sql = sql + fields[i].getName()+" = ?  where ";}}sql=sql+ fields[0].getName() +" = ?";System.out.println(sql);return sql;}public static String getTableName(Class<?> obj) {String className = obj.getName();int index = className.lastIndexOf(".");String realClassName = className.substring(index + 1);return realClassName;}public static void main(String[] args) {PrePareSql.selectSql(UserInfo.class,"liu");PrePareSql.insertSql(UserInfo.class);PrePareSql.deleteSql(UserInfo.class);PrePareSql.updateSql(UserInfo.class);}}//这个是工具类import java.lang.reflect.Field;import java.lang.reflect.Method;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class ConnectionUtil {private Connection conn;private String sql;private List params;public void setConn(Connection conn) {this.conn = conn;}public void setSql(String sql) {this.sql = sql;}public void setParams(List params) {this.params = params;}public Connection getConnection() {Connection conn = null;try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost/test","root", "root");} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return conn;}public List executeQuery(Class<?> entityClass) {ResultSet rs = null;List list = new ArrayList();try {setSql(PrePareSql.selectSql(entityClass));PreparedStatement pstmt = getConnection().prepareStatement(sql);//setParams(pstmt);rs = pstmt.executeQuery();while (rs.next()) {// System.out.println(rs.getString(1) + "\t" + rs.getString(2));Object newInstance = wrap(entityClass, rs);list.add(newInstance);}} catch (SQLException e) {e.printStackTrace();}return list;}// getOnepublic Object executeQuery(Class<?> entityClass, String id) {// Class<?> entityClass = entity.getClass();ResultSet rs = null;Object newInstance = null;setSql(PrePareSql.selectSql(entityClass, id));try {PreparedStatement pstmt = getConnection().prepareStatement(sql);pstmt.setString(1, id);rs = pstmt.executeQuery();while (rs.next()) {// System.out.println(rs.getString(1) + "\t" + rs.getString(2));newInstance = wrap(entityClass, rs);}} catch (SQLException e) {e.printStackTrace();}return newInstance;}public void save(Object entity) {Class<?> entityClass = entity.getClass();Field[] fileds = entityClass.getDeclaredFields();ArrayList arrayList = new ArrayList();try {for (Field f : fileds) {String getMethodName = "get"+ f.getName().substring(0, 1).toUpperCase()+ f.getName().substring(1);Method getMethod = entityClass.getMethod(getMethodName,new Class[] {});// System.out.println(setMethod);Object obj = getMethod.invoke(entity, new Object[] {});arrayList.add(obj);}} catch (Exception e) {e.printStackTrace();}try {setSql(PrePareSql.insertSql(entityClass));PreparedStatement pstmt = getConnection().prepareStatement(sql);setParams(arrayList);setParams(pstmt);pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}public void update(Object entity) {Class<?> entityClass = entity.getClass();Field[] fileds = entityClass.getDeclaredFields();ArrayList arrayList = new ArrayList();try {for (int i = 1; i < fileds.length; i++) {String getMethodName = "get"+ fileds[i].getName().substring(0, 1).toUpperCase()+ fileds[i].getName().substring(1);Method getMethod = entityClass.getMethod(getMethodName,new Class[] {});System.out.println(getMethod);Object obj = getMethod.invoke(entity, new Object[] {});arrayList.add(obj);}String getMethodName = "get"+ fileds[0].getName().substring(0, 1).toUpperCase()+ fileds[0].getName().substring(1);Method getMethod = entityClass.getMethod(getMethodName,new Class[] {});System.out.println(getMethod);Object obj = getMethod.invoke(entity, new Object[] {});arrayList.add(obj);} catch (Exception e) {e.printStackTrace();}for (int i = 0; i < arrayList.size(); i++) {System.out.println("array:   " + arrayList.get(i));}try {setSql(PrePareSql.updateSql(entityClass));PreparedStatement pstmt = getConnection().prepareStatement(sql);setParams(arrayList);setParams(pstmt);pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}public Object wrap(Class<?> entityClass, ResultSet rs) {Object obj2 = null;try {obj2 = entityClass.newInstance();} catch (InstantiationException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IllegalAccessException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}Field[] fileds = entityClass.getDeclaredFields();try {for (Field f : fileds) {String setMethodName = "set"+ f.getName().substring(0, 1).toUpperCase()+ f.getName().substring(1);Method setMethod = entityClass.getMethod(setMethodName,new Class[] { f.getType() });Object obj = rs.getObject(f.getName());setMethod.invoke(obj2, new Object[] { obj });}} catch (Exception e) {e.printStackTrace();}return obj2;}private void setParams(PreparedStatement pstmt) {if (this.params == null || this.params.size() == 0) {return;}try {for (int i = 0; i < this.params.size(); i++) {pstmt.setObject(i + 1, this.params.get(i));}} catch (SQLException e) {e.printStackTrace();}}public void delete(Object entity) {ArrayList arrayList = new ArrayList();Class<?> entityClass = entity.getClass();Field[] fileds = entityClass.getDeclaredFields();try {for (Field f : fileds) {String getMethodName = "get"+ f.getName().substring(0, 1).toUpperCase()+ f.getName().substring(1);Method getMethod = entityClass.getMethod(getMethodName,new Class[] {});// System.out.println(setMethod);Object obj = getMethod.invoke(entity, new Object[] {});arrayList.add(obj);}} catch (Exception e) {e.printStackTrace();}try {setSql(PrePareSql.deleteSql((entityClass)));PreparedStatement pstmt = getConnection().prepareStatement(sql);setParams(arrayList);setParams(pstmt);pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}}

热点排行