数据库表到java类转换工具
来源:互联网 发布:声音对比分析软件 编辑:程序博客网 时间:2024/06/07 03:53
//该工具类可以实现:给定一个指定的数据库表名,即可自动生成对应的java实体类
package com.iamzken.utils;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.net.URL;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.Vector;public class DB2JavaConvertor {private Connection connection;private PreparedStatement UserQuery;/*mysql url的连接字符串*/private static String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true";//账号private static String user = "root";//密码private static String password = "";private Vector<String> vector = new Vector<String>();//mysql jdbc的java包驱动字符串private String driverClassName = "com.mysql.jdbc.Driver";//数据库中的表名String table = "teacher";//数据库的列名称private String[] colnames; // 列名数组//列名类型数组 private String[] colTypes;public DB2JavaConvertor(){try {//驱动注册Class.forName(driverClassName);if (connection == null || connection.isClosed())//获得链接connection = DriverManager.getConnection(url, user, password);} catch (ClassNotFoundException ex) {ex.printStackTrace();System.out.println("Oh,not");} catch (SQLException e) {e.printStackTrace();System.out.println("Oh,not");}}public Connection getConnection() {return connection;}public void setConnection(Connection connection) {this.connection = connection;}public void doAction(){String sql = "select * from "+table;try {PreparedStatement statement = connection.prepareStatement(sql);//获取数据库的元数据 ResultSetMetaData metadata = statement.getMetaData();//数据库的字段个数int len = metadata.getColumnCount();//字段名称colnames = new String[len+1];//字段类型 --->已经转化为java中的类名称了colTypes = new String[len+1];for(int i= 1;i<=len;i++){//System.out.println(metadata.getColumnName(i)+":"+metadata.getColumnTypeName(i)+":"+sqlType2JavaType(metadata.getColumnTypeName(i).toLowerCase())+":"+metadata.getColumnDisplaySize(i));//metadata.getColumnDisplaySize(i);colnames[i] = metadata.getColumnName(i); //获取字段名称colTypes[i] = sqlType2JavaType(metadata.getColumnTypeName(i)); //获取字段类型}} catch (SQLException e) {e.printStackTrace();}}/* * mysql的字段类型转化为java的类型*/private String sqlType2JavaType(String sqlType) { if(sqlType.equalsIgnoreCase("bit")){ return "boolean"; }else if(sqlType.equalsIgnoreCase("tinyint")){ return "byte"; }else if(sqlType.equalsIgnoreCase("smallint")){ return "short"; }else if(sqlType.equalsIgnoreCase("INTEGER")){ return "int"; }else if(sqlType.equalsIgnoreCase("bigint")){ return "long"; }else if(sqlType.equalsIgnoreCase("float")){ return "float"; }else if(sqlType.equalsIgnoreCase("decimal") || sqlType.equalsIgnoreCase("numeric") || sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money") || sqlType.equalsIgnoreCase("smallmoney")){ return "double"; }else if(sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char") || sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar") || sqlType.equalsIgnoreCase("text")){ return "String"; }else if(sqlType.equalsIgnoreCase("datetime") ||sqlType.equalsIgnoreCase("date")){ return "java.util.Date"; }else if(sqlType.equalsIgnoreCase("image")){ return "Blod"; } return null; }/*获取整个类的字符串并且输出为java文件 * */public StringBuffer getClassStr(){String className = table.substring(0,1).toUpperCase()+table.substring(1);//输出的类字符串StringBuffer str = new StringBuffer("");//获取表类型和表名的字段名this.doAction();//校验if(null == colnames && null == colTypes) return null;str.append(this.getClass().getPackage()+";\r\n\r\n");//拼接str.append("public class "+className+" {\r\n");//拼接属性for(int index=1; index < colnames.length ; index++){str.append(getAttrbuteString(colnames[index],colTypes[index]));}//拼接get,Set方法for(int index=1; index < colnames.length ; index++){str.append(getGetMethodString(colnames[index],colTypes[index]));str.append(getSetMethodString(colnames[index],colTypes[index]));}str.append("}\r\n");//输出到文件中String s1 = DB2JavaConvertor.class.getPackage().getName().replace(".", "\\");String s2 = "src"+File.separator+"main"+File.separator+"java"+File.separator+s1;String s3 = System.getProperty("user.dir")+File.separator+s2; File file = new File(s3);if(!file.exists()){file.mkdirs();}BufferedWriter write = null;try {write = new BufferedWriter(new FileWriter(new File(s3+File.separator+className+".java")));write.write(str.toString());write.close();} catch (IOException e) {e.printStackTrace();if (write != null)try {write.close();} catch (IOException e1) {e1.printStackTrace();}}return str;}/* * 获取字段字符串*/public StringBuffer getAttrbuteString(String name, String type) {if(!check(name,type)) {System.out.println("类中有属性或者类型为空");return null;};String format = String.format(" private %s %s;\n\r", new String[]{type,name});return new StringBuffer(format);}/* * 校验name和type是否合法*/public boolean check(String name, String type) {if("".equals(name) || name == null || name.trim().length() ==0){return false;}if("".equals(type) || type == null || type.trim().length() ==0){return false;}return true;}/* * 获取get方法字符串*/private StringBuffer getGetMethodString(String name, String type) {if(!check(name,type)) {System.out.println("类中有属性或者类型为空");return null;};String Methodname = "get"+GetTuoFeng(name);String format = String.format(" public %s %s(){\n\r", new Object[]{type,Methodname});format += String.format(" return this.%s;\r\n", new Object[]{name});format += " }\r\n";return new StringBuffer(format);}//将名称首字符大写private String GetTuoFeng(String name) {name = name.trim();if(name.length() > 1){name = name.substring(0, 1).toUpperCase()+name.substring(1);}else{name = name.toUpperCase();}return name;}/* * 获取字段的get方法字符串*/private Object getSetMethodString(String name, String type) {if(!check(name,type)) {System.out.println("类中有属性或者类型为空");return null;};String Methodname = "set"+GetTuoFeng(name);String format = String.format(" public void %s(%s %s){\n\r", new Object[]{Methodname,type,name});format += String.format(" this.%s = %s;\r\n", new Object[]{name,name});format += " }\r\n";return new StringBuffer(format);}public static void main(String[] args) throws IOException {DB2JavaConvertor bean = new DB2JavaConvertor();System.err.println(bean.getClassStr());//System.out.println(ReflectBean.class.getPackage());//System.out.println(ReflectBean.class.getPackage().getName());//System.out.println(ReflectBean.class.getResource("").getPath());//File directory = new File("");//参数为空 //String courseFile = directory.getCanonicalPath() ; //System.out.println(courseFile); //////File f = new File(ReflectBean.class.getResource("").getPath()); //System.out.println(f);//////URL xmlpath = ReflectBean.class.getClassLoader().getResource(""); //System.out.println(xmlpath);////String s1 = directory.getAbsolutePath();//System.out.println(s1);/*String s3 = ReflectBean.class.getPackage().getName().replace(".", "\\");String s2 = System.getProperty("user.dir")+File.separator+s3; System.out.println(s2);*/}}
0 0
- 数据库表到java类转换工具
- 工具类,Java转换
- java实现导入excel到数据库的工具类
- 将mysql数据库转换到oracle的工具
- java数据库工具类
- Java工具类---金额转换工具 MoneyUtil
- Java工具类---金额转换工具 MoneyUtil
- Java编码转换工具类
- 身份证转换工具类(Java)
- Java数字转换工具类
- Java 类型转换 工具类
- java转换多种String格式到Date的类工具类
- java 数据库操作工具类
- java数据库操作工具类
- JAVA工具类(5) --- 批量导入excel表格数据到数据库中
- TPC-H工具使用:生成数据集及转换到PostgreSQL数据库中
- java日期格式转换工具类
- 【工具类】Java常用数据类型的转换
- A summary about gradient descent
- LeetCode 231 Power of Two(2的幂)
- 如何查找应用中哪个文件使用到了IDFA
- 2519: 可爱的数字序列
- 使用Java的RMI完成远程调用
- 数据库表到java类转换工具
- Java实现Excel导入数据库,数据库中的数据导入到Excel
- linux 网络编程相关知识
- 重拾编程之路--24、Swap Nodes in Pairs
- kali 下使用nmap
- 了解微软开源核心机器学习技术DMTK
- 变量初窥
- java正则表达式学习总结,以及和javascript正则表达式的区别
- Process Lasso Pro 64位中文版