最近学习hibernate,为了更加理解ORM思想。用java 语言模拟了从数据库表到java bean中的映射,通过数据库的字段信息生成对应的javabean.
com.xxg.dao 包下的类 。该类主要是得到数据库表的各字段信息,并封装到数据库字段类型bean中,并添加到list中。
package com.xxg.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.xxg.bean.TableType;
public class DateBacDao {
private ArrayList<TableType> list;
//根据数据库的表名得到该数据库表对应的每一个字段的名字以及类型信息
public ArrayList<TableType> gainDateFromOracle (String tableName) throws SQLException
{
list = new ArrayList<TableType>();
Connection conn = null;
conn = DBConn.getConnection();
Statement stat =null;
stat = conn.createStatement();
String sql = "select *from "+tableName;
ResultSet rs = null;
rs = stat.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();//得到结果集字段信息
int columNumber = rsmd.getColumnCount();//得到表的总列数
//遍历每一列,得到每一列的属性名称,属性类型然后将其封装到tabletype 中
for(int i=1;i<=columNumber;i++){
TableType Tt = new TableType(rsmd.getColumnName(i),rsmd.getColumnTypeName(i));
list.add(Tt);
}
DBConn.closeAll(rs, stat, conn);
return list;
}
}
数据表中基本字段信息bean
package com.xxg.bean;
public class TableType {
private String columName;
private String columType;
public String getColumName() {
return columName;
}
public void setColumName(String columName) {
this.columName = columName;
}
public String getColumType() {
return columType;
}
public void setColumType(String columType) {
this.columType = columType;
}
public TableType( String columName, String columType) {
super();
this.columName = columName;
this.columType = columType;
}
}
生成数据库表到实体javabean 的映射类
public class JavaToFile {
private static Map<String, String> javaTypeMappingOracle = new HashMap<String, String>();
private DateBacDao dbc ;
static{
javaTypeMappingOracle.put("NUMBER", "int");
javaTypeMappingOracle.put("VARCHAR2", "String");
javaTypeMappingOracle.put("DATE", "Date");
}
//public static String t_user= "t_user";
public static void main(String[] args) throws SQLException {
//new JavaToFile().diverseFistToUppcase("x");
new JavaToFile().writeJavaToFile("t_bill");
}
// 生成属性
public String gainField(String name) throws SQLException{
//System.out.println("begiain");
String str = "";
dbc = new DateBacDao();
ArrayList<TableType> list = new ArrayList<TableType>();
list = dbc.gainDateFromOracle(name);
//System.out.println(list.size());
for(int i=0;i<list.size();i++){
// System.out.println(str);
str = str+ "\t private " + javaTypeMappingOracle.get(list.get(i).getColumType())+" "+list.get(i).getColumName().toLowerCase()+";\n";
}
// System.out.println(str);
return str;
}
//生成set方法
public String gainSet(String name) throws SQLException
{
String str = "";
dbc = new DateBacDao();
ArrayList<TableType> list = new ArrayList<TableType>();
list = dbc.gainDateFromOracle(name);
for(int i=0;i<list.size();i++){
str = str+"\t public void "+" set"+
diverseFistToUppcase(list.get(i).getColumName().toLowerCase())+
"("+javaTypeMappingOracle.get(list.get(i).getColumType())+" "+list.get(i).getColumName().toLowerCase()+
") {"+"\n "+" \tthis."+list.get(i).getColumName().toLowerCase()+" = "+list.get(i).getColumName().toLowerCase()+
";\n"+"\t}\n";
}
//System.out.println(str);
return str;
}
//生成get方法
public String gainGet(String name) throws SQLException
{
String str = "";
dbc = new DateBacDao();
ArrayList<TableType> list = new ArrayList<TableType>();
list = dbc.gainDateFromOracle(name);
for(int i=0;i<list.size();i++){
str = str+"\tpublic"+" "+
javaTypeMappingOracle.get(list.get(i).getColumType())+" "
+diverseFistToUppcase(list.get(i).getColumName().toLowerCase())+"( )"+" {"+
"\n\n\t return"+ " "+list.get(i).getColumName().toLowerCase()+" ;\t}\n\n";
}
//System.out.println(str);
return str;
}
// 拼装java 文件
public String bornJavaFile(String tableName) throws SQLException{
String javafile = "";
javafile = "public class " + " "+diverseFistToUppcase(tableName)+"{\n"+
gainField(tableName)+"\n"+gainGet(tableName)+"\n"+gainSet(tableName)+"\n}";
//System.out.println(javafile);
return javafile;
}
public void writeJavaToFile(String name) throws SQLException{
try {
FileWriter fw = new FileWriter(new File(diverseFistToUppcase(name)+".java"));
String str = bornJavaFile(name);
//System.out.println(str);
BufferedWriter bfw = new BufferedWriter(fw);
bfw.write(str);
bfw.close();
fw.close();
System.out.println("success saving ");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//将字符串转换成首字母大写
public String diverseFistToUppcase(String str){
String st = "";
if(str.length()>=2){
st = (str.charAt(0)+"").toUpperCase() +str.substring(1);
}
else if(str.length()==1){
st = (str.charAt(0)+"").toUpperCase();
}
//System.out.println(st);
return st;
}
}
分享到:
相关推荐
本话题聚焦于如何模拟Hibernate的功能,自动生成Java Bean文件,这在开发过程中可以极大地提高效率,尤其是在处理大量数据库表结构时。以下是关于这个主题的详细知识: 1. **Hibernate简介**: Hibernate是一个...
Hibernate是一个开源的ORM框架,它提供了一种在Java应用中操作数据库的便捷方式,通过将Java对象与数据库表进行映射,实现了数据的透明访问。这使得开发者可以避免编写大量的SQL语句,专注于业务逻辑的实现。 **二...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码...
在标题"控制反转应用,模拟Hibernate"中,我们讨论的是如何使用Java编程来模拟Hibernate中的IoC概念。Hibernate是一个流行的对象关系映射(ORM)框架,它在处理数据库操作时,利用IoC来管理对象的生命周期和依赖关系...
3. **Hibernate框架**:Hibernate用于处理数据库操作,通过实体类(Entity)映射数据库表,使用`@Entity`、`@Table`等注解定义表结构,`@Id`标识主键,`@GeneratedValue`指定主键生成策略。Hibernate的Session接口是...
Hibernate通过配置文件或注解将Java对象与数据库表进行映射,提供了透明的数据存取接口,包括CRUD(创建、读取、更新、删除)操作以及查询语言HQL。 将这三个框架整合在一起,可以构建出一个完整的、基于MVC模式的...
Hibernate通过ORM(对象关系映射)技术,将Java对象与数据库表对应起来,简化了数据库操作,同时也提供了强大的查询语言HQL和 Criteria API。 除了SSH框架,项目可能还会涉及以下知识点: 1. 数据库设计:为了支持...
Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库的交互。通过Hibernate,开发者可以使用面向对象的编程方式来操作数据库,无需关心底层SQL语句,大大降低了数据访问层的复杂性。 Spring框架...
它们通常映射到数据库表,使用JPA(Java Persistence API)或Hibernate等ORM(对象关系映射)工具进行管理。在这个项目中,实体bean可能会包含账户编号、余额等属性,并提供存取款、查询余额等操作。 4. **JPA和...
* Hibernate是一个ORM(Object-Relational Mapping)框架,用于将Java对象与关系数据库进行映射。 * Hibernate框架提供了一个灵活的框架来实现数据持久化和对象关系映射。 * Hibernate框架支持多种关系数据库,包括...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的...
【描述】"模拟当当网的java web开发的源代码"表明该项目使用了Java Web技术栈,涵盖了服务器端编程、数据库交互、前端展示等多个方面。它可能包括用户登录注册、商品浏览、购物车管理、订单处理等功能模块,帮助...
- **对象关系映射**:Hibernate将数据库中的表映射为Java对象,反之亦然,使得开发者可以使用面向对象的方式来操作数据库。 - **SessionFactory与Session**:SessionFactory是线程安全的,用于创建Session实例,...
【JAVA模拟题笔记】 在Java编程中,模拟题是一个有效的学习和复习工具,涵盖了语言的基础概念、高级特性以及常见的设计模式。以下是一些基于提供的题目所涉及的关键知识点: 1. **线程控制**: - 线程的运行可以...
其次,Hibernate是一个流行的ORM(对象关系映射)工具,它允许Java开发者使用对象模型而不是SQL来操作数据库。在Spring框架中,我们可以利用Hibernate SessionFactory和Session接口进行数据持久化操作。 集成Spring...
Hibernate通过ORM(对象关系映射)将Java对象与数据库表对应,减少了手动编写SQL的负担。在这个项目中,Hibernate可能会用来操作公交线路、站点等数据。 **3. 地图API** 百度地图API是百度提供的开放接口,允许...
4. **实体类与数据库映射**:在Java中,为每个数据库表创建一个对应的实体类,使用Hibernate的注解来指定主键(@Id)、属性与列的映射(@Column)等。还可以使用@OneToMany、@ManyToOne、@OneToOne等注解处理关联...
2. 数据访问对象(UserDAO.java):使用Hibernate API与数据库交互,实现用户的增删查改操作。 3. 用户服务层(UserService.java):封装业务逻辑,调用DAO层操作,例如注册新用户、验证登录等。 4. Struts2 Action类(如...
Hibernate是一个强大的Java持久层框架,它简化了数据库操作,通过对象关系映射(ORM)技术将Java对象与数据库表进行绑定。Hibernate提供了丰富的API,可以进行CRUD操作,支持HQL(Hibernate查询语言)和 Criteria ...