闲着没事,写了一个从表生成javabean的工具类,大家可以在此基础进行发散。
第一步建立jdbc数据库连接
/** * 获取连接 * @return */ public static Connection getConnection(){ try { Class.forName("oracle.jdbc.OracleDriver"); String url = "******"; String user = "******"; String password = "******"; Properties properties = new Properties(); properties.put("user", user); properties.put("password", password); properties.put("remarksReporting","true");//想要获取数据库结构中的注释,这个值是重点 return DriverManager.getConnection(url,properties); } catch (Exception e) { e.printStackTrace(); } return null; }
第二步:获取表结构信息
/** * 获取表结构 * @param tableName * @return */ public static List<ColumnModel> getTableStructure(String tableName){ List<ColumnModel> columnModelList = new ArrayList<ColumnModel>(); try { //TODO 表相关 //ResultSet tableSet = metaData.getTables(null, "%",tableName,new String[]{"TABLE"}); //TODO 字段相关 ResultSet columnSet = getConnection().getMetaData().getColumns(null,"%",tableName,"%"); ColumnModel columnModel = null; while(columnSet.next()){ columnModel = new ColumnModel(); columnModel.setColumnName(columnSet.getString("COLUMN_NAME")); columnModel.setColumnSize(columnSet.getInt("COLUMN_SIZE")); columnModel.setDataType(columnSet.getString("DATA_TYPE")); columnModel.setRemarks(columnSet.getString("REMARKS")); columnModel.setTypeName(columnSet.getString("TYPE_NAME")); String columnClassName = ColumnTypeEnum.getColumnTypeEnumByDBType(columnModel.getTypeName()); String fieldName = getFieldName(columnModel.getColumnName()); String fieldType = Class.forName(columnClassName).getSimpleName(); columnModel.setFieldName(fieldName); columnModel.setColumnClassName(columnClassName); columnModel.setFieldType(fieldType); columnModelList.add(columnModel); //System.out.println(columnModel.toString()); } } catch (Exception e) { e.printStackTrace(); } return columnModelList; } /** * 将数据库字段转换成bean属性 * @param columnName * @return */ private static String getFieldName(String columnName) { char[] columnCharArr = columnName.toLowerCase().toCharArray(); StringBuffer sb = new StringBuffer(); int ad = -1; for (int i = 0; i < columnCharArr.length; i++) { char cur = columnCharArr[i]; if(cur=='_'){ ad = i; }else{ if((ad+1)==i&&ad!=-1){ sb.append(Character.toUpperCase(cur)); }else{ sb.append(cur); } ad=-1; } } return sb.toString(); } public static void main(String[] args) { getTableStructure("T_user"); }
第三,生成javaBean
/** * 从表结构中去生成javabean * @param structureList * @param beanName * @return */ public static String genJavaBeanFromTableStructure(List<ColumnModel> columnModelList,String beanName){ StringBuffer sb = new StringBuffer(); try { sb.append("public class "+toFirstCharUpCase(beanName)+" {\r\n"); for (ColumnModel columnModel : columnModelList) { if(StringUtils.isNotBlank(columnModel.getRemarks())){ sb.append(" //"+columnModel.getRemarks()+" \r\n"); } sb.append(" private "+columnModel.getFieldType()+" "+columnModel.getFieldName()+";\r\n"); } sb.append("\r\n"); //get set for (ColumnModel columnModel : columnModelList) { sb.append( "\tpublic String get"+toFirstCharUpCase((String) columnModel.getFieldName())+"() {\r\n" + "\t\treturn "+columnModel.getFieldName()+";\r\n" + "\t}\r\n" + "\r\n" + "\tpublic void set"+toFirstCharUpCase((String) columnModel.getFieldName())+"(String "+columnModel.getFieldName()+") {\r\n" + "\t\t"+columnModel.getFieldName()+" = "+columnModel.getFieldName()+";\r\n" + "\t}\r\n\r\n"); } sb.append("}\r\n"); } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } /** * 将首字母变大写 * @param str * @return */ public static String toFirstCharUpCase(String str){ char[] columnCharArr = str.toCharArray(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < columnCharArr.length; i++) { char cur = columnCharArr[i]; if(i==0){ sb.append(Character.toUpperCase(cur)); }else{ sb.append(cur); } } return sb.toString(); } /** * @param args */ public static void main(String[] args) { List<ColumnModel> columnModelList = JdbcUtil.getTableStructure("T_User"); System.out.println(genJavaBeanFromTableStructure(columnModelList,"User")); }
列模型:ColumnModel.java
package com.pingan.bean; /** * 列模型 * @author LUSHUIFA */ public class ColumnModel { private String columnName; private String dataType; private String typeName; private String columnClassName; private String fieldName; private String fieldType; private int columnSize; private String columnDef; private String remarks; public String getColumnName() { return columnName; } public void setColumnName(String columnName) { this.columnName = columnName; } public String getDataType() { return dataType; } public void setDataType(String dataType) { this.dataType = dataType; } public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } public int getColumnSize() { return columnSize; } public void setColumnSize(int columnSize) { this.columnSize = columnSize; } public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } @Override public String toString() { return "ColumnModel [columnName=" + columnName + ", dataType=" + dataType + ", typeName=" + typeName + ", columnClassName=" + columnClassName + ", fieldName=" + fieldName + ", fieldType=" + fieldType + ", columnSize=" + columnSize + ", columnDef=" + columnDef + ", remarks=" + remarks + "]"; } public String getColumnDef() { return columnDef; } public void setColumnDef(String columnDef) { this.columnDef = columnDef; } public String getColumnClassName() { return columnClassName; } public void setColumnClassName(String columnClassName) { this.columnClassName = columnClassName; } public String getFieldName() { return fieldName; } public void setFieldName(String fieldName) { this.fieldName = fieldName; } public String getFieldType() { return fieldType; } public void setFieldType(String fieldType) { this.fieldType = fieldType; } }
数据类型枚举:ColumnTypeEnum.java
package com.pingan.Enum; /** * 数据库类型枚举 * @author LUSHUIFA * */ public enum ColumnTypeEnum { VARCHAR2("VARCHAR2","java.lang.String"), NUMBER("NUMBER","java.lang.Double"), DATE("DATE","java.lang.String"), CHAR("CHAR","java.lang.String"); private String dbType; private String javaType; ColumnTypeEnum(String dbType,String javaType){ this.dbType = dbType; this.javaType = javaType; } public static String getColumnTypeEnumByDBType(String dbType){ for(ColumnTypeEnum columnTypeEnum:ColumnTypeEnum.values()){ if(columnTypeEnum.getDbType().equals(dbType)){ return columnTypeEnum.getJavaType(); } } return ""; } public String getDbType() { return dbType; } public void setDbType(String dbType) { this.dbType = dbType; } public String getJavaType() { return javaType; } public void setJavaType(String javaType) { this.javaType = javaType; } }
相关推荐
"SqlToJavaBean_javabean_根据表结构生成javabean_生成javabean_"这个标题暗示了一个工具或库,它能够自动化地根据数据库中的表结构生成对应的JavaBean类,从而减少开发者的手动编码工作。 描述中提到"根据数据表...
于是一怒之下,自己动手丰衣足食,就自己用Swing写了一个通过数据库的表生成JavaBean的工具,支持MySQL、Oracle、SQLServce,完美支持JPA注解,可以同时生成Entity和DTO,可以自动去除表前缀,并支持去除多个前缀,...
标题中的“根据数据库表结构生成javabean的Eclipse插件”是指一种Eclipse插件开发成果,它的主要功能是自动生成Java Bean类,这些Bean类对应于数据库中的表结构,便于开发者在Java应用程序中方便地操作数据库。...
- 选择对应的数据库连接,然后在表列表中选择你想要映射的表,JPA会自动生成对应表结构的Java实体类。 4. **自定义生成的JavaBean**: - 默认生成的JavaBean可能不完全满足需求,比如字段注解、访问修饰符等。...
为了解决这个问题,出现了JavaBean自动生成工具,它们可以根据数据库中的表结构自动创建对应的JavaBean类,大大提高了开发效率。 标题中提到的"javaBean自动生成工具"就是这类工具的一个实例,它能够基于MySQL...
本工具“mysql, sqlserver, Oracle 数据库生成javabean小工具”正是为了解决开发者手动编写javabean时的繁琐工作,它能够自动根据数据库中的表结构生成对应的javabean文件。 1. **数据库连接**: 工具支持三种主流...
MyBatis逆向生成JavaBean是一种高效开发工具,它能够帮助开发者自动生成Java实体类(Bean),这些实体类对应数据库中的表结构,大大减少了手动编写Java代码的工作量。这一过程通常被称为MyBatis Generator(MBG)的...
总的来说,数据库直接生成JavaBean文件的工具是Java开发中的利器,它通过自动化的方式减少了编码工作量,提高了代码质量,促进了开发过程的标准化,对于快速构建基于数据库的应用程序非常有帮助。开发者可以根据实际...
1. 数据获取:你需要获取到 JavaBean 的字段信息,这可以来自数据库的表结构描述,或者 JSON 对象。对于数据库,你可以使用 JDBC 或其他库来执行 SQL 查询,获取表的列名和类型。 2. 字段转换:将数据库的列信息...
5. 数据库脚本:创建学生管理系统的数据库表结构。 6. 配置文件:如web.xml,定义Servlet的映射和应用配置。 通过完成这样的项目,学生可以深入理解Web应用开发流程,包括用户交互、数据处理、数据库操作等关键环节...
Sqlbean是一款通过Java语法生成SQL语句的ORM插件,其理念是弱化在开发阶段对数据库的操作,无需先建表再开发,可直接编写实体类和业务代码,项目启动后自动创建表和维护表结构。内置大量常用方法,支持灵活的条件...
通过JDBC接口,我们能够创建、读取、更新和删除数据库表中的数据。在实际开发中,为了提高代码的可维护性和复用性,通常会将数据库操作封装到单独的服务类或DAO(Data Access Object)中,再由JavaBean调用这些服务...
本系统基于Java平台,采用设计模式:MVC(模型--视图--控制),采用的技术:Jsp+JavaBean+Struts+JDBC,数据库:MySQL Struts采用Struts 1.2 版本,MySQL采用MySQL5.0 系统特色: 1,栏目无限级分类,形成树型结构,可以...
一旦配置完成,你可以直接运行该类的main方法,系统会根据数据库中的表结构自动生成对应的Java Bean、Mapper、Service、Controller等文件,以及React的组件代码。 Java Bean是Java对象模型的表示,它通常包含了...
3. JSP页面通过`<form>`标签的`action`属性指定的URL,调用后台的JavaBean(可能是通过Servlet或Filter)处理请求。 4. JavaBean接收到数据后,可能进行验证,然后将新留言保存到数据库。 5. 同时,JavaBean会从...
- **DomModelGenerator**:生成JavaBean模型类,对应于数据库中的表。 - **JavaClientGenerator**:生成DAO接口,提供了对数据库操作的方法。 - **SqlMapGenerator**:生成Mapper XML文件,其中包含了SQL语句和...
- **数据库设计**:为了支持学生选课系统,需要设计合理的数据库结构,可能包括学生表、课程表、选课关系表等,以及相应的主键、外键约束,以保持数据的一致性和完整性。 - **用户认证和授权**:系统可能包含登录和...
综上所述,"jsp+servlet+javabean_教学管理系统"是一个典型的Java Web应用,它结合了前端展示、后端处理和数据存储的功能,通过MVC模式实现了良好的代码结构,为教学管理工作提供了高效、便捷的平台。
通过JSP的内置对象(如request、response、session等),可以获取和响应用户的数据,实现与用户的交互。 **JavaBean**: JavaBean是一种符合特定规范的Java类,它是Java组件模型的一部分,常被用作Web应用程序中的...