`
nintenyun
  • 浏览: 27051 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

ORMAPPING 简单实现

阅读更多
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基础.pdf

    总的来说,ORMapping是实现对象模型与关系型数据之间转换的关键技术,通过NHibernate提供的XML映射文档,开发者可以方便地定义对象和数据库之间的关系,从而简化数据访问层的代码,提高开发效率。理解并熟练掌握...

    百度校园招聘笔试题-研发工程师.pdf

    设计一个简单的ORMapping框架,需要考虑以下几个步骤: 1. **设计思路**:首先,我们需要定义一个基类或接口,用于表示所有数据库实体。然后,每个具体的数据库实体类继承自这个基类,其中包含属性对应数据库表中的...

    hibernate4快速入门实例详解

    ORMapping 原理的核心是将数据库中的表格与 Java 类进行映射,使得数据库的操作能够通过对象的方式来实现。以下是一些基本的 ORMapping 规则: 1. 类与数据库表格相对应。 2. 类的属性对应表格的列。 3. 类的实例...

    《软件开发基础(Java)》实验报告-Java高级特性.docx

    在本实验中,通过注解的方式实现ORMapping,例如`@Entity`表示一个类对应数据库中的表,`@ID`标识主键字段,`@Column`指定字段与数据库列的映射。通过反射机制,我们可以动态读取这些注解,生成相应的SQL创建语句。 ...

    创建灵活易扩展的J2EE企业应用程序框架

    这些框架各有优缺点,例如Struts以其简单性和广泛社区支持受到青睐,而JSF提供了更丰富的组件库和更强大的状态管理。选择表现层框架时,应考虑用户体验、开发效率和后期维护等因素。 数据持久层则涉及数据的存储和...

    Beetl模板引擎入门教程.pdf

    Beetl不仅作为一个模板引擎,还包含了一个强大的ORMapping工具——BeetlSQL,该工具以SQL为中心,提供了简单易用的全功能对象关系映射,支持代码自动生成,简化了数据库操作。 Beetl2.9版本带来了诸多改进和优化,...

    高级服务端框架支持各种DB、LDAP、XML

    3. **事务管理能力**:ORMER还支持声明式事务管理,这使得开发者可以通过简单的配置文件或注解来控制事务的开启、提交和回滚,无需手动编写事务相关的代码,提高了开发效率并降低了出错的可能性。 #### 应用案例...

    Hibernate笔记

    - **EntityBean**:EJB中的一个概念,早期的ORM实现之一,提出TO对象(与VO类似,但实现了序列化接口)。 - **JDO**(Java Data Objects):可以直接通过修改VO来更新数据库,但在连接管理方面存在不足。 - **...

    J2EE学习路线及重要知识点

    - **图形用户界面**:Java的AWT库提供了基本的GUI组件和事件处理模型,可以用来构建简单的桌面应用。 - **事件模型**:Java GUI编程中的事件处理模型基于观察者模式,实现了组件和监听器之间的解耦。 - **匿名类**:...

    java学习之路

    - **匿名类**: 是一种没有名字的类,主要用于简化代码,尤其是在需要创建单例或简单的监听器时非常有用。 #### 正则表达式 - 正则表达式是一种用于匹配字符串的强大工具。在Java中,通过`java.util.regex`包来实现...

    bidu 百度2009 科大 笔试题目

    设计一个简单的ORMapping框架,主要包含对象模型和数据库映射两个部分。 1. 设计思路: - 对象模型:创建一个基础类,用于表示数据库表,子类继承此基础类来定义具体对象。 - 数据库映射:通过注解或配置文件将...

    ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG 4.3】

    同时通过实体可快速实现数据库表的增删改查等操作,另外,所生成的操作数据库的代码,只需按生成的配置文件说明修改数据库连接,即可用于各种类型数据库的访问操作等,对应文件会自动解析,即一次生成可用于各种类型...

Global site tag (gtag.js) - Google Analytics