package com.jn0812a.crm.commons.utils;
import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;
/**
*
* @author Wuhuihe
*
*
*/
public class HibernateStrategy extends DelegatingReverseEngineeringStrategy {
public HibernateStrategy(ReverseEngineeringStrategy arg0) {
super(arg0);
}
/*
* 重写字段反向生成POJO类中的成员变量的命名规则 如果字段中含有下划线,默认第一个下划线之前的字符为前缀,将被删除。去除前缀后,
* 第一个字母大写,其他字母全部小写,如果后面有下划线去除下划线。
*
*/
@Override
public String columnToPropertyName(TableIdentifier table, String column) {
if (column != null) {
String[] tmp = column.split("_");
// 最终的表名
String finalPropertyName = "";
if (tmp.length == 1) {
// 没有下划线
finalPropertyName = tmp[0].toLowerCase();
} else {
//有下划线,默认去除前缀
for (int i = 1; i < tmp.length; i++) {
finalPropertyName = finalPropertyName + tmp[i].toLowerCase();
}
}
return finalPropertyName;
}
return "";
}
/*
* 重写表反向生成PoJO类的命名规则 注意:第一个下划线之前的位置为前缀,将被删除。去除前缀后,
* 第一个字母大写,其他字母全部小写,如果后面有下划线去除下划线,并对下划线后的第一个字母大写
* 如:表VIP_CUSTOMER生成的POJO类为Customer
* 表VIP_CUSTOMER_EXTEND生成的POJO类为CustomerExtend;
*/
@Override
public String tableToClassName(TableIdentifier table) {
// TODO Auto-generated method stub
if (table != null) {
// 先获取包路径
String prifix = super.tableToClassName(table);
int lastpoint = prifix.lastIndexOf(".");
String packagename = prifix.substring(0, lastpoint + 1);
//JOptionPane.showMessageDialog(null,packagename);
String tablename = table.getName();
String[] tmp = tablename.split("_");
// 最终的表名
String finalClassName = "";
String firstChar = "";
String otherChar = "";
if (tmp.length == 1) {
// 没有下划线
firstChar = tmp[0].substring(0, 1).toUpperCase();
otherChar = tmp[0].substring(1).toLowerCase();
finalClassName = firstChar + otherChar;
} else {
for (int i = 1; i < tmp.length; i++) {
firstChar = tmp[i].substring(0, 1).toUpperCase();
otherChar = tmp[i].substring(1).toLowerCase();
finalClassName = finalClassName + firstChar + otherChar;
}
}
return packagename + finalClassName;
} else {
return super.tableToClassName(table);
}
}
}
分享到:
相关推荐
- **自动映射**:实体生成工具会根据数据库中的表结构自动生成实体类,包括属性、注解等,完成对象与表的映射。 - **节省时间**:手动创建这些实体类可能非常耗时,特别是在大型项目中,涉及到的表很多。工具的使用...
- 在弹出的对话框中,指定生成实体类的目标位置和命名规则,点击确定后,IDE会自动根据表结构生成对应的实体类。 4. 实体生成的扩展: - `hibernate.reveng.xml`:除了图形界面生成,也可以通过配置此文件来生成...
本教程将深入讲解如何根据数据库表自动生成实体类、Hibernate配置文件以及实体映射文件。 首先,我们需要了解Hibernate的基本概念。Hibernate提供了一个在Java应用中使用的持久化模型,它允许开发者用面向对象的...
而“Hibernate代码自动生成”则是指利用Hibernate的工具或者第三方库,自动生成与数据库表对应的Java实体类、DAO(数据访问对象)层、Service层以及相关的SQL语句,从而减少手动编写这些重复性代码的工作量,提高...
数据库反向生成实体类是软件开发中的一个常见实践,特别是在使用ORM(对象关系映射)框架如Hibernate时。这个过程主要是将数据库结构转化为代码,自动创建对应的Java实体类,这样可以减少手动编写这些类的工作量,...
Swing编写的Hibernate生成器是一种实用工具,它利用Java Swing图形用户界面来简化Hibernate框架的实体类和映射文件的创建过程。Hibernate是Java领域中一个广泛应用的对象关系映射(ORM)框架,它允许开发者通过面向...
9. **优化与扩展**:生成的代码可能需要根据项目需求进行一些定制化修改,例如添加更复杂的查询逻辑、分页功能或特定的业务规则。 总结起来,Hibernate DAO生成工具极大地简化了数据访问层的开发工作,它将数据库...
标题提到的“根据数据库生成实体类的一个工具”是一种自编写的程序,旨在自动化这个过程。开发者通常会为每个数据库表创建一个对应的JavaBean类,手动编写字段、getter和setter方法以及相关的注解。这种工具可以显著...
Java反向生成实体工具是一种高效实用的开发辅助软件,它极大地简化了开发过程中实体类的创建工作。在Java编程中,实体类是用于映射数据库表的重要组件,通常需要开发者手动编写,这不仅耗时,而且容易出错。有了这种...
Oracle自动生成实体是一种高效开发工具的功能,它可以帮助程序员快速地基于数据库中的表结构创建相应的Java实体类。在Java企业级开发中,实体类是数据访问层的重要组成部分,它们通常映射到数据库表,用于存储和操作...
在Java世界中,实体类通常用于ORM(对象关系映射)框架,如Hibernate或MyBatis,它们将数据库表的行映射为Java对象的实例。实体类通常包含对应于数据库表字段的属性,并且具有getter和setter方法,以及可能的构造...
在Java开发中,Eclipse是一款广泛使用的集成开发环境(IDE),它提供了许多便捷的功能,其中之一就是能够自动生成实体类。实体类通常用于表示数据库中的表,它们是对象关系映射(ORM)框架如Hibernate的基础。这个...
例如,Hibernate是Java领域广泛使用的ORM框架,它允许开发者用XML或注解方式定义映射规则。 在“生成实体,映射生成实体.zip”这个压缩包中,包含的两个文件可能提供了一种自动化工具的使用指南: 1. **使用指南....
生成实体类是一项常见的任务,尤其是在使用ORM(对象关系映射)框架如Hibernate、MyBatis等时。这些框架允许开发者通过Java对象与数据库交互,而无需编写SQL语句。下面我们将详细探讨如何根据数据库表名生成对应的...
- 如果使用XML映射文件,则需要为每个实体类创建对应的`.hbm.xml`文件,并定义相应的映射规则。 5. **测试生成的POJO**: - 创建一个简单的测试类,使用Hibernate API进行CRUD操作,确保生成的POJO能够正确地与...
标题中的“利用Middlegen Hibernate3生成hbm.xml配置和java类”指的是使用Middlegen工具来自动化创建Hibernate3框架所需的映射文件(hbm.xml)和对应的Java实体类。这个过程是数据库对象到Java对象(O/R Mapping)的...
- 指定生成实体类的命名规则,例如字段名是否需要驼峰式命名。 - 生成实体类,每个类对应数据库中的一个表,类中的属性对应表的列。 - 自动生成的实体类通常包含getter和setter方法,以及JPA或Hibernate的注解,...
实体类是Java持久化框架(如Hibernate)的基础,用于在内存中代表数据库记录。 3. **代码生成**: 自动化代码生成工具能够减少重复工作,提高开发效率。在这个例子中,工具根据MySQL表的元数据(列名、数据类型等)...
4. 可能还包括生成对应的Java实体类:一些工具会同时生成与映射文件相对应的Java类,方便开发者直接使用。 `ssb_codegen`这个文件可能是工具的名称或者是生成代码后的文件夹,具体使用方式可能需要查看工具的文档或...
生成的Java类通常是每个数据库表对应一个,它们包含了与表字段相对应的属性,以及由Hibernate生成的getter和setter方法。HBM文件则是XML格式,它描述了Java类与数据库表之间的映射关系,包括字段类型、主键、外键等...