java 数据库表批量,或者单个转换成javaBean对象工具

把数据库表转成javaBean, 有人支持大小写按java标准转换, 个人经验表明: 全部用数据库大写使用更方便, 不容易出错.

本工具可以转换成标准bean格式, 也可以数据库字段原始的方式创建bean

使用本工具的前提: 必须提供 DataSource 数据源对象, 本代码是从spring中获取数据源, 兄弟们可以改写这个代码, 用自己的数据源.

BYTE,SHORT对象用INTEGE,不再区别处理.

FLOAT,DOUBLE对象用BIGDECIMAL,不再区别处理.

生成的属性全部是对象,没有使用 int, long 这类基本属性.

生成的文件在工程目录下面与src目录平级.

全部代码如下: 


package com.test.util;

import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.sql.DataSource;

import org.springframework.jdbc.datasource.DataSourceUtils;
//此类请自己定义
import com.test.Const;
import com.test.ServiceLocator;


/**
 * 数据库表转换成javaBean对象工具,
 * 1,bean属性按原始数据库字段经过去掉下划线,并大写处理首字母等等.
 * 2,可以按原始表中的列名生成bean字段(大写),不做任何修改.
 * @author  guishuanglin 2013-11-26
 */
public class TableToEntityUtils {
	//BYTE,SHORT对象用INTEGE,不再区别处理.
	//FLOAT,DOUBLE对象用BIGDECIMAL,不再区别处理.
	private final int jINTEGER = 1;
	private final int jLONG = 2;
	private final int jDATE = 3;
	private final int jSTRING = 4;
	private final int jBIGDECIMAL = 5;
	private final int jOBJECT = 6;
	private final String sINTEGER ="Integer";
	private final String sLONG = "Long";
	private final String sDATE = "Date";
	private final String sSTRING = "String";
	private final String sBIGDECIMAL = "BigDecimal";
	private final String sOBJECT = "Object";
	//资料
	private int dataBaseType =-1;
	private String tablename = "";
	private String beanName = "";
	private int colCount;//列数
	private String[] benFieldName;
	private String[] benClassName;
	private int[] benClassType;
	private String[] colnames;
	private String[] colTypes;//列类型名字.
	private int[] colSizes; // 列字符大小
	private int[] colScale; // 列小数精度
	//引用包
	private boolean importUtil = false; // 导入包java.util.*
	private boolean importSql = false;  // 包java.sql.*
	private boolean importMath = false; // 包java.math.*
	//控制变量
	private boolean isConvertColName =true;//是否把列名转成java规范的名字.
	private boolean onlyCreateBean =true;	//只生成Bean.
	//类附加注释
	private SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd");
	private String strDate=null;
	private String author="table tool";
	
	/** 入口 */
	public void execute(String dbTableName) {
		if(dbTableName ==null) return;
		if(strDate ==null)
			strDate = DateFormat.format(new Date());
		tablename = dbTableName;
		beanName  = this.firstUpperCase(this.toJavaName(dbTableName.toLowerCase()));
		boolean b = processTableMetaData(dbTableName);
		if(b){
			//初始 bean字段数组.
			benFieldName = new String[colCount];
			benClassName = new String[colCount];
			benClassType = new int[colCount];
			//处理每列对应的bean属性与java类型
			this.processClassnames();
			//生成实体 bean
			b =tableToEntity(beanName);
		}
	}
	
	/**
	 * 处理数表媒体数据, spring数据源名称: dataSource0,dataSource1,dataSource2,dataSource3,dataSource4,dataSource5.
	 */
	private boolean processTableMetaData(String tName) {
		boolean b =false;
        // 请改成自己的数据源
		DataSource ds = (DataSource) ServiceLocator.getService("dataSource0");
		Connection conn = DataSourceUtils.getConnection(ds); // 得到数据库连接
		String strsql = "SELECT * FROM " + tablename;//+" WHERE ROWNUM=1";
		try {
			System.out.println("================ "+tName+" ====&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一直以来把数据库转换成Entity或DTO都是一件让人头痛的事情,既浪费时间又很繁琐,看着几十上百个的几百上千个字段,真是一件让人很头痛的事情。 我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不干净,配置非常繁琐等等问题。 于是一怒之下,自己动手丰衣足食,就自己用Swing写了一个通过数据库生成JavaBean工具,支持MySQL、Oracle、SQLServce、PostgreSQL,完美支持JPA注解,可以同时生成Entity和DTO,可以自动去除前缀,并支持去除多个前缀,支持精确指定只生成哪几个Bean,也支持模糊查找生成哪几个Bean,现在不但成员变量上能生成备注了,而且在Getter和Setter上也能有备注了! 更重要的是所有的配置都能被保存到本地,只要配置过一次,下次使用只要点一下生成JavaBean,下一秒就能拿到你想要的JavaBean了,完全实现秒生成。并且集成各种实用工具,使得工作效率瞬间爆棚,生产力瞬间爆。 第10版更新震撼发布,效率大提升,功能更加强大,速度过来围观,这次版本更新如下: 1、新增数据库连接池并可以手动配置,提升数据库连接的使用效率。 2、新增多线程并发处理并可以手动配置,大大提升数据收集和文件生成的效率。 3、增强字符串格式化工具,使得自动拼接字符串的应用场景更多。 4、测试数据库连接、生成Bean文件、精确匹配的更多等按钮都使用了异步线程进行处理, 这样界面不再会被卡住了,点了这些按钮以后还可以同时对界面进行其他操作, 如:移动、最小化、设置参数、使用集成工具等。 5、生成Bean文件按钮添加计时功能,当点击该按钮以后,按钮上的文字会变为读秒计时, 这样就不会以为程序卡死了。 6、更新Oracle的数据库驱动包,提升了数据库连接和查询的速度。 7、更新MySQL的数据库驱动包。 8、其他一些小Bug的修改和代码优化调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值