Hibernate方法模拟
来源:互联网 发布:微软程序员年薪 编辑:程序博客网 时间:2024/06/05 08:46
package cn.itcast.hibernate;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class PoolUtils {
private static DataSource source = new ComboPooledDataSource();
//返回连接池
return source;
}
}
package cn.itcast.hibernate;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
public class Hibernate {
public static <T> void save(T t) throws Exception{
//获取class对象
Class clazz = t.getClass();
//获取类的不含包的名称
//生成sql语句
StringBuffer sb = new StringBuffer("insert into "+className+" values(");
//获取类上的字段
Field[] fs = clazz.getDeclaredFields();
//获取字段的个数
//根据字段的个数来确定问号的个数
if(i!=len-1)
sb.append(" ?,");
else
sb.append(" ?)");
}
//把StringBuffer类型变为String类型
//获取参数个数来生成相同长度的数组
//把参数加入到数组中
for(int i=0;i<len;i++){
//使用暴力访问
fs[i].setAccessible(true);
//获取参数的值根据字段其中返回的值为Object类型
}
/* Method[] ms = clazz.getDeclaredMethods();
int i=0;
for(Method m:ms){
if(m.getReturnType()==void.class)
continue;
params[i++]=m.invoke(t, null);
System.out.println(params[i-1]);
}*/
//获取QueryRunner
QueryRunner runner = new QueryRunner(PoolUtils.getSource());
//执行语句
}
//此方法是动态的生成数据库中的表结构(此类只有int和string类型)
public static void createTable(Class clazz) throws Exception{
//拼接sql语句
Field[] fs = clazz.getDeclaredFields();
for(int i=0;i<fs.length;i++){
String fn = fs[i].getName();
String type =fs[i].getType().getSimpleName();
if(type.equals("int")||("Integer").equals(type)){
if(i==0)
sb.append(fn +" int primary key , ");
else if(i==fs.length-1)
sb.append(fn +" int );");
else
sb.append(fn + " int , ");
}
if(type.equals("String"))
if(i==fs.length-1)
sb.append(fn +" varchar(225) );");
else
sb.append(fn +" varchar(225) , ");
}
System.out.println(sb);
QueryRunner runner = new QueryRunner(PoolUtils.getSource());
runner.update(sb.toString());
}
}
- Hibernate方法模拟
- 模拟hibernate save方法的实现过程
- hibernate之简单模拟hibernate的save方法
- Hibernate 模拟
- Hibernate模拟
- hibernate模拟
- 【Hibernate】模拟Hibernate
- Hibernate:模拟Hibernate实现
- hibernate-----模拟hibernate原理
- 简单模拟实现hibernate
- hibernate实现原理模拟
- Hibernate原理和模拟
- 简易模拟Hibernate实现
- hibernate模拟实现insert
- 模拟Hibernate一级缓存
- Hibernate模拟实现
- hibernate模拟实现
- 模拟Hibernate实现
- 可以计算阶乘次方的大数计算器
- java 工厂模式
- 【java集合框架源码剖析系列】java源码剖析之LinkedList
- C++成员变量的初始化顺序问题
- Hibernate的事务控制机制
- Hibernate方法模拟
- Liferay 6.1开发学习(二):创建一个Portlet工程
- 初识angularJs
- HDFS工作原理
- JAVAEE学习查询
- 第5课:实战演示JVM三大性能调优参数:-Xms -Xmx -Xss
- 【MFC】:MFC中单选框和复选框的使用教程
- [线段树] LightOJ 1135 - Count the Multiples of 3
- App Widgets