package com.quan.hibernate.model;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
/**
* Session的模拟
*/
public class create {
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hibernate";
String user = "sa";
String password = "123";
String tableName = "_Student";
Map<String,String> cfs = new HashMap<String, String>();
String[] methodNames;
public create() {
cfs.put("_id", "id");
cfs.put("_name","name");
cfs.put("_age", "age");
methodNames = new String[cfs.size()];
}
public void save(Student s) throws Exception {
String sql = createSQL();
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement ps = conn.prepareStatement(sql);
for(int i = 0; i<methodNames.length;i++) {
Method m = s.getClass().getMethod(methodNames[i]);
Class r= m.getReturnType();
if(r.getName() == "java.lang.String") {
String returnValue = (String)m.invoke(s);
ps.setString(i+1, returnValue);
}
if(r.getName() == "int") {
Integer returnValue = (Integer)m.invoke(s);
ps.setInt(i+1, returnValue);
}
}
/*for(int i = 0; i<cfs.size(); i++) {
ps.setXXX(s.getXXX);
}*/
ps.executeUpdate();
ps.close();
conn.close();
}
private String createSQL() {
String str1 = "";
String str2 = "";
int index = 0;
for(String s : cfs.keySet()) {
String v = cfs.get(s);
v= Character.toUpperCase(v.charAt(0)) + v.substring(1);
methodNames[index] = "get" + v;
str1 += s + ",";
}
str1 = str1.substring(0, str1.length()-1);
for(int i = 0; i<cfs.size();i++) {
str2 += "?,";
}
str2 = str2.substring(0, str2.length()-1);
String sql = "insert into "+tableName+"("+str1+")"+"valses ("+str2+")";
return sql;
}
}
分享到:
相关推荐
Hibernate Session释放模式
hibernate配置文件,session工厂学习,session链接数据库
No Hibernate Session bound to thread,没有绑定线程解决办法,找了好久才找到的
Hibernate-nosession浅谈代码案例。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
可以对hibernate的 Session 和 Transaction 有更深入的认识 希望对一些概念比较模糊的人 有帮助
Hibernate 中对session的管理!
hibernate中session的管理描述。 hibernate中session的管理描述。
hibernate继承关系映射和java反射机制的运用
这个资源对应的是我的博客里头的hibernate模拟程序的源码
手写hibernate的session实现简单增删改查,适合新手学习hibernate
Hibernate的透明持久化用起来非常舒服,有时甚至忘记了数据库的存在。我身边的朋友经常会分不清save、saveOrUpdate、update的区别,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且关于实体...
NULL 博文链接:https://former.iteye.com/blog/676665
hibernate session详细方法,值得珍藏
Hibernate_session_factory_配置
hibernate中session对象的状态详解
JDBC模拟hibernate,能过反射把数据重新装载进实体类
NULL 博文链接:https://selvemen.iteye.com/blog/457225
通过xml文件配置数据库连接信息 PO类和数据库表的映射关系通过xml文件配置 模拟Hibernate中Session类的save()、delete()、update()和get()方法
JAVA的hibernate手动获取session的方法
如果传入的参数是持久化对象,Session就计划执行一个delete语句。如果传入的参数是游离对象,先使游离对象被Session关联,使它变为持久化对象,然后计划执行一个delete语句。值得注意的是,Session只有在清理缓存的...