域模型:Student
package com.eagle.hibernate.model;
public class Student {
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
测试类:StudentTest
import com.eagle.hibernate.model.Student;
public class StudentTest {
public static void main(String args[]){
Student s = new Student();
s.setId(8);
s.setName("student2");
s.setAge(18);
Session session = new Session();
session.save(s);
}
}
实现功能类:Session
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.eagle.hibernate.model.Student;
public class Session {
String tableName = "_Student";//数据库表名
Map<String,String> cfs = new HashMap<String,String>();
String[] methodNames;
public Session(){
cfs.put("_id","id");//key表示数据库字段,id表示student属性
cfs.put("_name", "name");
cfs.put("_age", "age");
methodNames = new String[cfs.size()];//存储get方法的名字
}
public void save(Student s) {
String sql = createSQL();
Connection conn = null;
PreparedStatement psmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/hibernate?user=root&password=root";
conn = DriverManager.getConnection(url);
psmt = conn.prepareStatement(sql);
for(int i=0;i<methodNames.length;i++){
Method m = s.getClass().getMethod(methodNames[i]);//获得student的get方法
Class r = m.getReturnType();//取得返回值类型的类
System.out.println(m.getName()+"|"+r.getName());
if(r.getName().equals("java.lang.String")){
String returnValue = (String)m.invoke(s);//m.invoke()表示执行m方法,此方法返回值存入returnValue
psmt.setString(i+1, returnValue);
}
if(r.getName().equals("int")){
Integer returnValue = (Integer)m.invoke(s);
psmt.setInt(i+1, returnValue);
}
}
psmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} finally{
try {
psmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private String createSQL() {
String str1="";//数据库字段
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;//取得student属性的get方法名
str1 += s+",";
index++;
}
str1 = str1.substring(0,str1.length()-1);
String str2="";//sql语句未知参数
for(int i=0;i<cfs.size();i++){
str2+="?,";
}
str2=str2.substring(0,str2.length()-1);
String sql = "insert into "+ tableName + " ( "+ str1 +" ) "+" values ( "+str2+" )";
System.out.println(sql);
return sql;
}
}
分享到:
相关推荐
标题 "myhibernatetest" 暗示我们讨论的主题是关于使用Hibernate框架进行Java编程,结合MySQL数据库的实践项目。这个项目很可能是为了演示如何在实际开发中整合这三个技术来构建一个数据驱动的应用。 Hibernate是...
同时,还需要在设备或模拟器上安装并运行,检查数据库的创建、数据的插入、查询以及其他数据库操作是否按预期工作。 通过分析和学习这个"android hibernate demo例子",开发者可以了解如何在Android项目中实现ORM,...
在本教程中,"Struts5.3.exe"可能是一个安装程序或模拟器,用于帮助学习者搭建Struts 2.3版本(因为Struts 1.x的最新版本是1.3.x,而Struts 2的版本可能表述为2.3.x)的环境。通常,这样的教程会包含以下内容: 1. ...
同时,Flex的模拟器和调试工具也有助于前端的调试工作。 9. **部署与扩展**:由于Spring的模块化设计,整个应用可以根据需求进行横向和纵向扩展,适应不同的部署环境。 通过以上分析,我们可以看出Flex+Spring+...
- 本文首先探讨了自动化测试和报文测试领域的现状及挑战,研究了Java平台的特性与架构,特别是GWT(Google Web Toolkit)和Hibernate等技术在开发中的应用。 - ISO8583报文协议和TCP/IP通讯协议是金融领域报文传输...
血糖模拟器根据食物消耗和运动数据模拟用户的血糖水平。 该项目为用户开发了一个血糖模拟器。 该模拟器允许用户根据... 该项目正在用 Java 实现,并使用多种技术,如 J2EE、JSP、Hibernate、RESTful Web 服务和 Maven。
本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...
后端则负责业务逻辑处理和数据库交互,使用ORM(对象关系映射)工具如SQLAlchemy、Hibernate或Entity Framework简化数据库操作。 在实际开发中,还需要考虑系统的安全性,比如防止SQL注入、XSS攻击等。此外,系统需...
【资源整合包】是一个针对初学者特别设计的压缩文件,包含了两个关键的技术框架——SSH(Struts+Spring+Hibernate)和S2SH(Struts2+Spring+Hibernate)。这两个框架是Java Web开发中非常重要的组合,尤其对于那些...
- 使用ORM(Object-Relational Mapping)框架如Hibernate,可以简化Java对象与数据库表之间的映射,方便数据的存取。 5. **事件驱动编程**: - Java的事件监听机制使得用户界面的按钮、菜单等组件能够响应用户的...
本系统采用Android框架,可以在eclipse中安装Android开发插件,使用Android模拟器也可以使用任意Android终端。模拟器和真正的Android手机没有太大... 3 同时使用了了hibernate提供的校验框架,对客户端数据进行校验!
3. **开发工具与环境**:书中介绍了如何使用NetBeans IDE 4.1和Mobility Pack 4.1进行MIDlet开发,以及如何使用WTK 2.2进行模拟器测试,还有Tomcat 5.0的安装和使用指南,以及如何集成第三方SDK。 ### 精通...
JUnit可以用来测试业务逻辑,而Struts2的模拟器可以帮助测试Action类的行为。 9. **部署与运行**: 最后,项目需要打包成WAR文件,部署到Servlet容器(如Tomcat)上运行。用户可以通过浏览器访问应用,输入城市名...
模拟网上银行系统通常使用Oracle、MySQL等关系数据库管理系统,配合JPA(Java Persistence API)或Hibernate等ORM(Object-Relational Mapping)框架,简化数据库操作。 五、异常处理与日志记录 完善的异常处理机制...
"livebookstore"这个文件名暗示了这个项目可能是一个运行中的书店模拟器,包含了与实际在线书店类似的业务流程,例如用户注册、浏览书籍、添加到购物车、下单支付等。开发者可以通过研究这个项目,学习如何在实际...
本学生考勤管理系统采用MVC开发模式,利用MySQl来存储数据,并通过Hibernate进行数据管理。使用android布局技术完成UI的设计,并在不同型号的设备模拟器上进行测试。 研究思路: 采用软件工程的思想对系统进行整体的...
本学生考勤管理系统采用MVC开发模式,利用MySQl来存储数据,并通过Hibernate进行数据管理。使用android布局技术完成UI的设计,并在不同型号的设备模拟器上进行测试。 研究思路: 采用软件工程的思想对系统进行整体的...
本学生考勤管理系统采用MVC开发模式,利用MySQl来存储数据,并通过Hibernate进行数据管理。使用android布局技术完成UI的设计,并在不同型号的设备模拟器上进行测试。 研究思路: 采用软件工程的思想对系统进行整体的...
- Hibernate Mappings:描述了Hibernate框架如何映射数据库表到Java对象,实现对象关系映射(ORM)。 - Installables:模块的安装组件,包括配置文件、脚本等,用于模块化部署和管理。 - **核心模块**:CORE模块...
Elysium 是一个 Runescape Classic 服务器模拟器。 该项目的目标是在功能完整性方面与 RSCD 项目相匹配,同时提供改进的代码库。 持续集成可以在这里找到: : IRC 服务器:irc.moparistthebest.com IRC 频道:#...