JAVA数据库反射生成实体.docx
- 文档编号:29379180
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:21
- 大小:19.38KB
JAVA数据库反射生成实体.docx
《JAVA数据库反射生成实体.docx》由会员分享,可在线阅读,更多相关《JAVA数据库反射生成实体.docx(21页珍藏版)》请在冰豆网上搜索。
JAVA数据库反射生成实体
Java数据库反射生成实体
1.Mysql数据库表自动生成实体工具
packagecom.dreamsunlight.util.tools;
importjava.io.File;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSetMetaData;
importjava.sql.SQLException;
importjava.util.Date;
importcom.dreamsunlight.util.base.StringUtil;
/**
*
*
*@ClassName:
EntityMysql
*
*@Description:
TODO(Mysql数据库表映射实体类生成)
*
*@authorsunzk(QQ:
1131341075weixin:
DreamSunlight88)
*
*@date2018年8月15日下午9:
29:
46
*
*/
publicclassEntityMysql{
//指定实体生成所在包的路径
privateStringpackageOutPath="com.dreamsunlight.busi.mode";
//作者名字
privateStringauthorName="DreamSunling信息技术有限公司";
//表名
privateStringtablename="t_sys_color";
//列名数组
privateString[]colnames;
//列名类型数组
privateString[]colTypes;
//列名大小数组
privateint[]colSizes;
//是否需要导入包java.util.*
privatebooleanf_util=false;
//是否需要导入包java.sql.*
privatebooleanf_sql=false;
//数据库连接
privatestaticfinalStringURL="jdbc:
mysql:
//localhost:
3306/fhadmin";
privatestaticfinalStringNAME="root";
privatestaticfinalStringPASS="root";
privatestaticfinalStringDRIVER="com.mysql.jdbc.Driver";
/**
*
*
Title:
*
Description:
EntityMysql-Mysql数据库实体类
*/
publicEntityMysql(){
Connectioncon=null;
//查要生成实体类的表
Stringsql="select*from"+tablename;
PreparedStatementpStemt=null;
try{
try{
Class.forName(DRIVER);
}catch(ClassNotFoundExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
con=DriverManager.getConnection(URL,NAME,PASS);
pStemt=con.prepareStatement(sql);
ResultSetMetaDatarsmd=pStemt.getMetaData();
intsize=rsmd.getColumnCount();
colnames=newString[size];
colTypes=newString[size];
colSizes=newint[size];
for(inti=0;i colnames[i]=rsmd.getColumnName(i+1); colTypes[i]=rsmd.getColumnTypeName(i+1); if(colTypes[i].equalsIgnoreCase("datetime")){ f_util=true; } if(colTypes[i].equalsIgnoreCase("image")||colTypes[i].equalsIgnoreCase("text")){ f_sql=true; } colSizes[i]=rsmd.getColumnDisplaySize(i+1); } Stringcontent=parse(colnames,colTypes,colSizes); try{ Filedirectory=newFile(""); //Stringpath=this.getClass().getResource("").getPath(); //StringoutputPath=directory.getAbsolutePath()+"/src/"+path.substring(path.lastIndexOf("/com/",path.length()),path.length())+initcap(tablename)+".java"; StringoutputPath=directory.getAbsolutePath()+"/src/main/java/"+this.packageOutPath.replace(".","/")+"/"+initcap(tablename)+".java"; Stringoutpath=outputPath.replaceAll("\\\\","/"); FileWriterfw=newFileWriter(outpath); PrintWriterpw=newPrintWriter(fw); pw.println(content); pw.flush(); pw.close(); }catch(IOExceptione){ e.printStackTrace(); } }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ con.close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } /** * *@Title: parse *@Description: TODO(生成实体类主体代码) *@param@paramcolnames *@param@paramcolTypes *@param@paramcolSizes *@param@return设定文件 *@returnString返回类型 *@throws */ privateStringparse(String[]colnames,String[]colTypes,int[]colSizes){ StringBuffersb=newStringBuffer(); //判断是否导入工具包 if(f_util){ sb.append("importjava.util.Date;\r\n"); } if(f_sql){ sb.append("importjava.sql.*;\r\n"); } sb.append("package"+this.packageOutPath+";\r\n"); sb.append("\r\n"); //注释部分 sb.append("/**\r\n"); sb.append("*"+tablename+"实体类\r\n"); sb.append("*"+newDate()+""+this.authorName+"\r\n"); sb.append("*/\r\n"); //实体部分 sb.append("publicclass"+initcap(tablename)+"{\r\n"); //属性 processAllAttrs(sb); //gettersetter方法 processAllMethod(sb); sb.append("}\r\n"); returnsb.toString(); } /** * *@Title: processAllAttrs *@Description: TODO(功能: 生成所有属性) *@param@paramsb设定文件 *@returnvoid返回类型 *@throws */ privatevoidprocessAllAttrs(StringBuffersb){ /** *循环生成属性值信息 */ for(inti=0;i sb.append("\tprivate"+sqlType2JavaType(colTypes[i])+""+StringUtil.toCamel(colnames[i])+";\r\n"); } } /** * *@Title: processAllMethod *@Description: TODO(生成所有方法) *@param@paramsb设定文件 *@returnvoid返回类型 *@throws */ privatevoidprocessAllMethod(StringBuffersb){ /** *循环列生成方法 */ for(inti=0;i sb.append("\tpublicvoidset"+initcap(colnames[i])+"("+sqlType2JavaType(colTypes[i])+""+ StringUtil.toCamel(colnames[i])+"){\r\n"); sb.append("\tthis."+StringUtil.toCamel(colnames[i])+"="+StringUtil.toCamel(colnames[i])+";\r\n"); sb.append("\t}\r\n"); sb.append("\tpublic"+sqlType2JavaType(colTypes[i])+"get"+initcap(StringUtil.toCamel(colnames[i]))+"(){\r\n"); sb.append("\t\treturn"+StringUtil.toCamel(colnames[i])+";\r\n"); sb.append("\t}\r\n"); } } /** * *@Title: initcap *@Description: TODO(将字符串大写) *@param@paramstr *@param@return设定文件 *@returnString返回类型 *@throws */ privateStringinitcap(Stringstr){ returnstr.toUpperCase(); } /** * *@Title: sqlType2JavaType *@Description: TODO(获得列的数据类型) *@param@paramsqlType *@param@return设定文件 *@returnString返回类型 *@throws */ privateStringsqlType2JavaType(StringsqlType){ if(sqlType.equalsIgnoreCase("bit")){ return"boolean"; }elseif(sqlType.equalsIgnoreCase("tinyint")){ return"byte"; }elseif(sqlType.equalsIgnoreCase("smallint")){ return"short"; }elseif(sqlType.equalsIgnoreCase("int")){ return"int"; }elseif(sqlType.equalsIgnoreCase("bigint")){ return"long"; }elseif(sqlType.equalsIgnoreCase("float")){ return"float"; }elseif(sqlType.equalsIgnoreCase("decimal")||sqlType.equalsIgnoreCase("numeric") ||sqlType.equalsIgnoreCase("real")||sqlType.equalsIgnoreCase("money") ||sqlType.equalsIgnoreCase("smallmoney")){ return"double"; }elseif(sqlType.equalsIgnoreCase("varchar")||sqlType.equalsIgnoreCase("char") ||sqlType.equalsIgnoreCase("nvarchar")||sqlType.equalsIgnoreCase("nchar") ||sqlType.equalsIgnoreCase("text")){ return"String"; }elseif(sqlType.equalsIgnoreCase("datetime")){ return"Date"; }elseif(sqlType.equalsIgnoreCase("image")){ return"Blod"; } returnnull; } /** * *@Title: main *@Description: TODO(主入口函数) *@param@paramargs设定文件 *@returnvoid返回类型 *@throws */ publicstaticvoidmain(String[]args){ newEntityMysql(); } } 2.Oracle数据库表自动生成实体工具 packagecom.dreamsunlight.util.tools; importjava.io.File; importjava.io.FileWriter; importjava.io.IOException; importjava.io.PrintWriter; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.ResultSet; importjava.sql.ResultSetMetaData; importjava.sql.SQLException; importjava.sql.Statement; importjava.util.Date; importcom.dreamsunlight.util.base.StringUtil; /** * * *@ClassName: EntityOracle * *@Description: TODO(Oracle数据库表实体生成) * *@authorsunzk(QQ: 1131341075weixin: DreamSunlight88) * *@date2018年8月15日下午11: 22: 51 * */ publicclassEntityOracle{ //指定实体生成所在包的路径 privateStringpackageOutPath="com.dreamsunlight.busi.mode"; //作者名字 privateStringauthorName="DreamSunling信息技术有限公司"; //表名 privateStringtablename="t_sys_color"; //列名数组 privateString[]colnames; //列名类型数组 privateString[]colTypes; //列名大小数组 privateint[]colSizes; //是否需要导入包java.util.* privatebooleanf_util=false; //是否需要导入包java.sql.* privatebooleanf_sql=false; //数据库连接 privatestaticfinalStringURL="jdbc: oracle: thin: @127.0.0.1: 1521: ORCL"; privatestaticfinalStringNAME="root"; privatestaticfinalStringPASS="root"; privatestaticfinalStringDRIVER="oracle.jdbc.driver.OracleDriver"; /** * * Title: * Description: EntityOracle-构造表实体类生成主程序 */ publicEntityOracle(){ //创建连接 Connectioncon=null; //查要生成实体类的表 Stringsql="select*from"+tablename; StatementpStemt=null; try{ /** *连接数据库信息 */ try{ Class.forName(DRIVER); }catch(ClassNotFoundExceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } con=DriverManager.getConnection(URL,NAME,PASS); pStemt=(Statement)con.createStatement(); ResultSetrs=pStemt.executeQuery(sql); ResultSetMetaDatarsmd=rs.getMetaData(); //统计列 intsize=rsmd.getColumnCount(); colnames=newString[size]; colTypes=newString[size]; colSizes=newint[size]; for(inti=0;i //列名 colnames[i]=rsmd.getColumnName(i+1); //列类型 colTypes[i]=rsmd.getColumnTypeName(i+1); if(colTypes[i].equalsIgnoreCase("date")||colTypes[i].equalsIgnoreCase("timestamp")){ f_util=true; } if(colTypes[i].equalsIgnoreCase("blob")||colTypes[i].equalsIgnoreCase("char")){ f_sql=true; } colSizes[i]=rsmd.getColumnDisplaySize(i+1); } Stringcontent=parse(colnames,colTypes,colSizes); try{ Filedirectory=newFile(""); //Stringpath=this.getClass().getResource("").getPath(); //StringoutputPath=directory.getAbsolutePath()+"/src/"+path.subs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 数据库 反射 生成 实体