- 浏览: 441746 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
litainiu:
点亮了,感谢
Maven+Struts2+MyBatis+Spring搭建教程 -
y413059495:
对了 部署完跑起来了 完美!
Maven+Struts2+MyBatis+Spring搭建教程 -
springaop_springmvc:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
Maven+Struts2+MyBatis+Spring搭建教程 -
郑智睿:
把这句去掉,你就挂了<!DOCTYPE configur ...
Maven+Struts2+MyBatis+Spring搭建教程 -
zlfzml:
不行,没什么用
jquery uploadify插件多文件上传
例子采用MySQL数据库
代码:
package com.ustcsoft.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; /** * 类:DBToVO * 功能:根据数据库表生成VO--Value Object * @author sam * @e-mail:sanlai_lee@lisanlai.cn */ public class DBToJavaVO { private static final String TARGET_DIR="C:/tempVO/"; //类文件存放的路径 private static final String DIVER_NAME="org.gjt.mm.mysql.Driver"; private static final String URL="jdbc:mysql://localhost:3306/bms"; private static final String USERNAME="root"; private static final String PASSWORD="root"; private static final String DATABASE_NAME="BMS"; //数据库名称 private static final String AUTHOR="sam"; //作者 private static final String E_MAIL="sanlai_lee@lisanlai.cn"; //作者邮箱 private static final String PACKAGE_NAME="com.ustcsoft.vo"; //包名 private Connection conn; private Statement stmt; private String sql; private ResultSet rs; private String[] fields; //属性 private String[] dataTypes; //数据类型 private String[] comments; //属性的注释 /** * 方法:根据数据库表生成VO--Value Object * @param tableName */ private void tableToVo(){ String tableName; String className; try { InputStreamReader reader = new InputStreamReader(System.in); BufferedReader bf = new BufferedReader(reader); System.out.println("输入要转换成VO的表名称:"); tableName = bf.readLine().trim(); System.out.println("输入生成的类名,不输入的时候默认跟表名相同:"); className = bf.readLine().trim(); Class.forName(DIVER_NAME); conn = DriverManager.getConnection(URL,USERNAME,PASSWORD); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //创建可滚动的,只读的结果集 sql = "SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT"+ " FROM INFORMATION_SCHEMA.COLUMNS"+ " WHERE table_name = '"+tableName.toUpperCase()+"'"+ //表名 " AND table_schema = '"+DATABASE_NAME+"'"; //数据库名 System.out.println(sql); rs = stmt.executeQuery(sql); rs.last(); //把指针指向结果集的最后 int fieldNum = rs.getRow(); //取得最后一条结果的行号,作为类的属性个数 int n = fieldNum; if(n>0){ //判断数据表中是否存在字段 fields = new String[n]; dataTypes = new String[n]; comments = new String[n]; fields[--n] = rs.getString(1); dataTypes[n] = rs.getString(2); comments[n] = rs.getString(3); while(rs.previous()){ fields[--n]=rs.getString(1); //取得结果集的第一列数据,对应的列名:Field dataTypes[n] = rs.getString(2); comments[n] = rs.getString(3); } //打印相关信息 System.out.println("你要转换的表是:"+tableName); System.out.println("该表中共有"+fieldNum+"个字段,信息如下:"); for(int i=0,j=fields.length;i<j;i++){ System.out.println("----------------------------------------"); String field = fields[i]; System.out.println("字段名称:"+field); //把字段名称格式化成java命名规则形式 field=formatField(field); fields[i]=field; //把格式化后的字段放入属性数组中 System.out.println("数据类型:"+dataTypes[i]); //把数据库字段类型转换成java数据类型 String dataType = dataTypes[i].toLowerCase(); dataType = formatDataType(dataType); dataTypes[i] = dataType; System.out.println("字段注释:"+comments[i]); if("".equals(comments[i])||comments[i]==null){ comments[i]=fields[i]; } System.out.println("----------------------------------------"); } //格式化类名称 foramtClassName(className,tableName); //生成类文件,写入到磁盘中 writeObjectToFile(className); }else{ System.out.println("该表不存在或者表中没有字段"); } } catch (ClassNotFoundException e) { System.out.println("未找到数据库驱动"); System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); //e.printStackTrace(); } catch (IOException e) { System.out.println(e.getMessage()); //e.printStackTrace(); }finally{ try { if(stmt!=null){ if(!stmt.isClosed()){ stmt.close(); stmt=null; System.gc(); } } if(conn!=null){ if(!conn.isClosed()){ conn.close(); conn=null; System.gc(); } } } catch (SQLException e) { System.out.println(e.getMessage()); } } } /** * 把数据库字段格式成java变量名 * @param field * @return */ private String formatField(String field){ String[] strs = field.split("_"); field=""; for(int m = 0,length=strs.length;m<length;m++){ if(m>0){ String tempStr = strs[m].toLowerCase(); tempStr = tempStr.substring(0, 1).toUpperCase()+tempStr.substring(1, tempStr.length()); field += tempStr; }else{ field += strs[m].toLowerCase(); } } return field; } private String formatDataType(String dataType){ if(dataType.contains("char")){ dataType="java.lang.String"; }else if(dataType.contains("int")){ dataType="java.lang.Integer"; }else if(dataType.contains("float")){ dataType="java.lang.Float"; }else if(dataType.contains("double")){ dataType="java.lang.Double"; }else if(dataType.contains("number")||dataType.contains("decimal")){ dataType="java.math.BigDecimal"; }else if(dataType.contains("date")){ dataType="java.sql.Date"; }else if(dataType.contains("time")){ dataType="java.sql.Timestamp"; }else if(dataType.contains("clob")){ dataType="java.sql.Clob"; }else{ dataType="java.lang.Object"; } return dataType; } /** * 格式化类名 * @param className * @param tableName * @return */ private String foramtClassName(String className,String tableName){ //如果类名不是自己定义的,那么根据表名格式化类名 if("".equals(className)||className==null){ className=""; String[] tempArr = tableName.split("_"); for(int m=0,length=tempArr.length;m<length;m++){ className += tempArr[m].substring(0,1).toUpperCase()+tempArr[m].substring(1,tempArr[m].length()).toLowerCase(); } }else{ //如果类名已经输入,那么不管三七二十一就把类名的第一个字母大写 className = className.substring(0,1).toUpperCase()+className.substring(1,className.length()); } return className; } /** * 生成类并写到文件 * @param className */ @SuppressWarnings("deprecation") private void writeObjectToFile(String className){ PrintWriter writer = null; try { File dir = new File(TARGET_DIR); if(!dir.exists()){ dir.mkdirs(); } File file = new File(TARGET_DIR+className+".java"); if(!file.exists()){ file.createNewFile(); } writer = new PrintWriter(new BufferedWriter(new FileWriter(file))); //拼文件内容 StringBuffer content = new StringBuffer(); content.append("package "+PACKAGE_NAME+";\n\n"); content.append("/**\n"); content.append(" *@类:"+className+"\n"); content.append(" *@作者:"+AUTHOR+"\n"); content.append(" *@E-mail:"+E_MAIL+"\n"); content.append(" *@日期:"+new Date().toLocaleString().substring(0,10)+"\n"); content.append(" */\n\n"); content.append("public class "+className+"{\n\n"); for(int i=0,j=fields.length;i<j;i++){ content.append(" /**"+comments[i]+"*/\n"); content.append(" private "+dataTypes[i]+" "+fields[i]+";\n\n"); } //get set 方法 for(int i=0,j=fields.length;i<j;i++){ content.append(" /**\n"); content.append(" *方法: 取得"+fields[i]+"\n"); content.append(" *@return: "+dataTypes[i]+" "+fields[i]+"\n"); content.append(" */\n"); content.append(" public "+dataTypes[i]+" get"+fields[i].substring(0,1).toUpperCase()+fields[i].substring(1,fields[i].length())+"(){\n"); content.append(" return this."+fields[i]+";\n"); content.append(" }\n\n"); content.append(" /**\n"); content.append(" *方法: 设置"+fields[i]+"\n"); content.append(" *@param: "+dataTypes[i]+" "+fields[i]+"\n"); content.append(" */\n"); content.append(" public void set"+fields[i].substring(0,1).toUpperCase()+fields[i].substring(1,fields[i].length())+"("+dataTypes[i]+" "+fields[i]+"){\n"); content.append(" this."+fields[i]+" = "+fields[i]+";\n"); content.append(" }\n\n"); } content.append("}"); writer.write(content.toString()); writer.flush(); System.out.println("类生成成功,存放路径:"+TARGET_DIR); } catch (IOException e) { e.printStackTrace(); }finally{ if(writer!=null){ writer.close(); } } } public static void main(String[] args) { try { new DBToJavaVO().tableToVo(); } catch (Exception e) { System.out.println(e.getMessage()); } } }
- DBToJavaVO.rar (3 KB)
- 下载次数: 39
发表评论
-
Spring报cvc-complex-type.2.3: Element 'bean' cannot have character [children]
2012-09-26 14:11 38218今天在STS下面启动项目的时候,Spring报如下错: ... -
JTextArea自动滚动到最低端
2012-07-19 13:41 1184…… jScrollPane = new JScrol ... -
网站代码完成,正式上线使用,纪念一下
2012-03-03 20:58 1475朋友他爹的公司,公司成立不久,网站我一个人业余时间胡乱写的,完 ... -
IP地址查询接口收集
2011-12-28 21:03 3186新浪 IP 地址查询接口:http://counter.sin ... -
Maven+Struts2+MyBatis+Spring搭建教程
2011-12-20 18:22 28301教程目标: 在MyEclipse中搭建Struts2+My ... -
C3P0 配置详细说明
2011-12-19 18:41 1262<c3p0-config><default- ... -
Flex Builder 4.5 正式版eclipse插件利用BlazeDS于java交互实例
2011-11-09 22:24 3305Flash Builder 4.5的插件好像跟3在细节上有点不 ... -
Java 发送邮件
2011-06-24 16:36 1481/** * 邮件工具 */ package t ... -
JVM调优总结
2011-05-25 17:30 1117堆大小设置JVM 中最大堆大小有三方面限制:相关操作 ... -
java调用shell
2011-05-09 12:34 1883转自:http://www.cnblogs.com/Sea ... -
如何使用Log4j?
2011-01-04 16:32 10311、 Log4j是什么? Log4j ... -
html表格导出Excel
2010-09-19 23:37 4191<table id="export_table ... -
BBS论坛系统
2010-09-07 23:45 2012今天上班的时候,有位陌生朋友跟我聊天,问我可有BBS论坛的源码 ... -
java socket 多线程实例
2010-07-26 09:06 6247题: 做一个简单的网络控制软件,分为Server端和Cli ... -
jquery uploadify插件多文件上传
2010-06-01 13:07 128970效果图: 1、jqu ... -
BufferedReader 和BufferedWriter 实例
2010-05-23 12:57 3482/** * 文件处理工具类 * @author sam ... -
利用Ext.ux.UploadDialog异步实现多文件上传
2010-05-15 10:35 114051、先看看效果: 接下来详细说说怎么用它:java ... -
Servlet 中java路径的直观表示
2010-05-12 14:20 1816路径的参考项 1、工程名:jxdBlog 2、Eclipse工 ... -
Java 写注册表
2010-05-09 01:36 2348这里介绍的是利用registry向windows系统写注册表的 ...
相关推荐
这些工具通常需要用户指定数据库连接信息、表名,然后它们会根据表结构生成VO类。 在生成VO类的过程中,需要注意以下几点: - 数据类型转换:数据库中的数据类型需要转换为Java类型,例如,数据库中的`INT`对应...
根据数据库中表的字段自动生成java中的vo类,方便调用
因此,"eclipse插件,根据数据库表自动生成DTO(pojo)插件"应运而生,它极大地提高了开发效率。 该插件的核心功能是根据数据库中的表结构自动生成对应的DTO和POJO类。这样,开发者无需手动编写这些类,只需专注于...
根据题目描述,我们需要通过SQL查询从`user_tab_cols`和`user_col_comments`两个表中获取指定表(`APPLICANT`或`FA_USER`)的列信息及注释,并据此生成对应的Java类型。以下为具体的SQL实现: ```sql SELECT '...
MBG会根据表结构自动生成基本的CRUD操作。 4. **DAO实现类**:实现了Mapper接口,提供了调用数据库的方法。在MyBatis中,这部分通常是自动生成的,无需手动编写。 通过MBG,开发者可以避免手动编写大量的重复代码...
Oracle 自动化生成POJO(Plain Old Java Object)与VO(Value Object)工具,简称POVO工具,是一种提高开发效率的实用程序。在Java开发中,POJO和VO类经常被用于数据传输和持久化层,它们是业务逻辑和数据模型之间的...
这个工具的使用流程可能是这样的:首先,开发者配置好数据库连接信息,然后选择需要生成代码的数据库表。工具会解析表结构,生成对应的Entity类、DAO接口及其实现,以及Service接口和实现类。生成的代码会遵循一定的...
它通常会包含一个Java类,该类负责解析VO(Value Object)类,从中提取方法、参数、返回类型等信息,并将这些信息转换为Yapi支持的JSON格式,以便导入到Yapi平台上生成文档。 首先,我们需要理解VO类。在软件开发中...
3、可大大提高开发效率,数据表创建完以后,自动生成entity,mapper.xml,dao,service,controller,vo,dto相关代码。 4、本项目集成了spring,aop,mybatis plus,swagger2,异常处理,分页,freemarker等多种技术。 5、操作...
Middlegen-Hibernate是一款强大的代码生成工具,主要用于基于数据库表结构自动生成Java实体类(Value Object, VO)以及对应的Hibernate配置文件。首先,我们需要访问其官方网站或其他可信源下载最新版本的Middegen-...
使用说明 1.打开命令窗口 ...java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite 回车 5.MyBatis Generator finished successfully. 表示成功生成mapping、model等文件
"CRUD代码生成器(Java)" 是一个强大的工具,旨在帮助开发者根据数据库中的数据表自动生成基础CRUD代码。这包括实体类(Entity)、数据访问对象(DAO)、数据传输对象(DTO)、值对象(VO)、查询对象(QO)、转换器...
java web开发后台代码自动生成,支持SSH和SSM2大框架,数据库支持MySQL和sqlserver,根据数据库自动生成entity,vo,service,impl,action或者controller,dao,mapper等类,包含常用的增删改查方法,集成了pageheper分页...
Java代码生成器就是为了解决这个问题而设计的,它可以自动生成PO(Plain Old Java Object)、VO(Value Object)、DAO(Data Access Object)和Service层的Java类。 1. PO(Plain Old Java Object):PO对象通常...
"buildDTO"可能是生成DTO的命令或者工具名称,它可能包含了解析Excel模板并自动生成Java代码的功能。这样的工具通常会有一个用户友好的界面,允许开发者上传Excel文件,然后生成对应的源代码。 5. **Excel模板设计...
综上所述,快速代码生成器是JavaWeb开发中的实用工具,它能够基于Oracle数据库中的表信息,自动生成对应的VO和DAO类,大大简化了开发流程,提高了开发效率。对于大型项目或团队而言,这样的工具是不可或缺的,它可以...
您是不是因为java的开发和维护繁琐而烦恼,目前政府机关、企业大都要求用java来开发项目,本软件将彻底解决您的后顾之忧,通过本软件的自动生成功能,生成的java代码规范、全部开源,不存在用隐含的内容,全部代码...
Java实现的一个idea插件,用于实体转Mysql、oracle建表语句和json请求体的工具 使用 1、安装 下载发行版,打开idea:settings->plugins->intall plugin from disk 2、使用 打开实体类,右键选择ToMysql/ToOracle/To...
- 运行Java程序,程序会根据代码逻辑生成Word文档,同时将图片插入到表格中。 这个项目提供了一个完整的解决方案,使得开发者无需深入了解Word文档的内部结构,就能方便地在Java中生成包含表格和图片的Word文档。...