package com.nintenyun.hibernate.model;
public class Teacher {
private int id;
private String name;
private String title;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.HashMap;
import java.util.Map;
import com.nintenyun.hibernate.model.Teacher;
public class Session {
Map<String,String> cfs = new HashMap<String,String>();
String[] methodNames ;
String tableName = "_teacher";
public Session(){
cfs.put("_id","id");
cfs.put("_name","name");
cfs.put("_title","title");
methodNames = new String[cfs.size()];
}
public void save(Teacher t) throws Exception{
String sql = createSQL();
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/hibernate_or","root","nin");
PreparedStatement ps = conn.prepareStatement(sql);
for(int i = 0;i<methodNames.length ; i++){
Method m = t.getClass().getMethod(methodNames[i]);
Class r = m.getReturnType();
if(r.getName().equals("java.lang.String")){
String returnValue = (String)m.invoke(t);
ps.setString(i+1,returnValue);
}
if(r.getName().equals("int")){
Integer returnValue = (Integer)m.invoke(t);
ps.setInt(i+1,returnValue);
}
}
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 + ",";
index ++;
}
str1 = str1.substring(0,str1.length()-1);
for(int i = 0 ;i<cfs.size(); i++){
str2 = str2 + "?,";
}
str2 = str2.substring(0,str2.length()-1);
//System.out.println(str2);
String sql = "insert into " + tableName + "(" + str1 + ")" + " values " + "(" + str2 + ")" ;
System.out.println(sql);
return sql;
}
}
import com.nintenyun.hibernate.model.Student;
import com.nintenyun.hibernate.model.Teacher;
public class TeacherTest {
public static void main(String[] args) throws Exception{
Teacher t = new Teacher();
Session session = new Session();
t.setId(1);
t.setName("pass");
t.setTitle("master");
session.save(t);
}
}
分享到:
相关推荐
总的来说,ORMapping是实现对象模型与关系型数据之间转换的关键技术,通过NHibernate提供的XML映射文档,开发者可以方便地定义对象和数据库之间的关系,从而简化数据访问层的代码,提高开发效率。理解并熟练掌握...
设计一个简单的ORMapping框架,需要考虑以下几个步骤: 1. **设计思路**:首先,我们需要定义一个基类或接口,用于表示所有数据库实体。然后,每个具体的数据库实体类继承自这个基类,其中包含属性对应数据库表中的...
ORMapping 原理的核心是将数据库中的表格与 Java 类进行映射,使得数据库的操作能够通过对象的方式来实现。以下是一些基本的 ORMapping 规则: 1. 类与数据库表格相对应。 2. 类的属性对应表格的列。 3. 类的实例...
在本实验中,通过注解的方式实现ORMapping,例如`@Entity`表示一个类对应数据库中的表,`@ID`标识主键字段,`@Column`指定字段与数据库列的映射。通过反射机制,我们可以动态读取这些注解,生成相应的SQL创建语句。 ...
这些框架各有优缺点,例如Struts以其简单性和广泛社区支持受到青睐,而JSF提供了更丰富的组件库和更强大的状态管理。选择表现层框架时,应考虑用户体验、开发效率和后期维护等因素。 数据持久层则涉及数据的存储和...
Beetl不仅作为一个模板引擎,还包含了一个强大的ORMapping工具——BeetlSQL,该工具以SQL为中心,提供了简单易用的全功能对象关系映射,支持代码自动生成,简化了数据库操作。 Beetl2.9版本带来了诸多改进和优化,...
3. **事务管理能力**:ORMER还支持声明式事务管理,这使得开发者可以通过简单的配置文件或注解来控制事务的开启、提交和回滚,无需手动编写事务相关的代码,提高了开发效率并降低了出错的可能性。 #### 应用案例...
- **EntityBean**:EJB中的一个概念,早期的ORM实现之一,提出TO对象(与VO类似,但实现了序列化接口)。 - **JDO**(Java Data Objects):可以直接通过修改VO来更新数据库,但在连接管理方面存在不足。 - **...
- **图形用户界面**:Java的AWT库提供了基本的GUI组件和事件处理模型,可以用来构建简单的桌面应用。 - **事件模型**:Java GUI编程中的事件处理模型基于观察者模式,实现了组件和监听器之间的解耦。 - **匿名类**:...
- **匿名类**: 是一种没有名字的类,主要用于简化代码,尤其是在需要创建单例或简单的监听器时非常有用。 #### 正则表达式 - 正则表达式是一种用于匹配字符串的强大工具。在Java中,通过`java.util.regex`包来实现...
设计一个简单的ORMapping框架,主要包含对象模型和数据库映射两个部分。 1. 设计思路: - 对象模型:创建一个基础类,用于表示数据库表,子类继承此基础类来定义具体对象。 - 数据库映射:通过注解或配置文件将...
同时通过实体可快速实现数据库表的增删改查等操作,另外,所生成的操作数据库的代码,只需按生成的配置文件说明修改数据库连接,即可用于各种类型数据库的访问操作等,对应文件会自动解析,即一次生成可用于各种类型...