自己简单写的JDBCUtils,可以根据当前数据库下面的表生成java实体类,代码萌新,请多多包涵。

初始化配置:

//驱动程序名//不固定,根据驱动

static String driver = "com.mysql.jdbc.Driver";    // URL指向要访问的数据库名******,8.0jar包新增时区。

static String url = "jdbc:mysql://localhost/你的数据库名?serverTimezone=GMT%2B8";    // MySQL配置时的用户名

static String user = "你的帐号";    // Java连接MySQL配置时的密码******

static String password = "你的密码";

private static String[] colnames; // 列名数组

private static String[] colTypes; // 列名类型数组

private static String[] upperColnames; //驼峰命名的字段

private static List listArr=new ArrayList(); //存储最终的数据

static {        try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

打开与关闭数据库连接:

public static Connection mySQLOpen() {

Connection con = null;        try {

con = DriverManager.getConnection(url, user, password);

System.out.println("succeed to connection mysql!");

} catch (SQLException e) {

e.printStackTrace();

}        return con;

}    public static void mySQLClose(ResultSet rs, Statement st, Connection con) {           try {               try {                   if (rs != null) {

rs.close();

}

} finally {                   try {                       if (st != null) {

st.close();

}

} finally {                       if (con != null)

con.close();

}

}

} catch (SQLException e) {

e.printStackTrace();

}

}

获得当前数据库下的所有表名:

/**

* 获得当前数据库生成数据库下所有的表名

* @author one

*

* */

public static List getTableFromNowConnectDB(){

Connection conn=null;

DatabaseMetaData dbmd = null;

List list = null;        try {

conn=mySQLOpen();

dbmd=(DatabaseMetaData) conn.getMetaData();            //conn.getCatalog():获得当前目录

ResultSet rs = dbmd.getTables(conn.getCatalog(), "%", "%", new String[] { "TABLE" });            if (rs != null) {

list = new ArrayList();

}            while(rs.next()){                //System.out.println(rs.getString("TABLE_NAME"));

list.add(rs.getString("TABLE_NAME"));

}

} catch (Exception e) {

e.printStackTrace();

}        return list;

}

生成每个表名的所有字段:

/**

* 生成所有的字段

*

* @param sb,把stringbuffer 对象传进来继续append

* @return

*/

private static void processAllField(StringBuffer sb) {        for (int i = 0; i

sb.append("\tprivate " + colTypes[i] + " " + colnames[i] + ";\r\n");

}

}

生成每个表名的set(),get()访问器:

/**

* 生成所有的set(),get()

*

* @param sb,把stringbuffer 对象传进来继续append     */

private static void processAllMethod(StringBuffer sb) {        for (int i = 0; i

sb.append("\tpublic void set" + upperColnames[i] + "(" + colTypes[i] + " " + colnames[i] + "){\r\n");

sb.append("\t\tthis." + colnames[i] + " = " + colnames[i] + ";\r\n");

sb.append("\t}\r\n");

sb.append("\tpublic " + colTypes[i] + " get" + upperColnames[i] + "(){\r\n");

sb.append("\t\treturn this." + colnames[i] + ";\r\n");

sb.append("\t}\r\n");

}

}

生成每个表名的构造函数:

/**

* @author one

* 该方法用于生成构造函数

* @param sb,把stringbuffer 对象传进来继续append

* @see 默认生成一个无参数构造和带全部参数构造

*

* public UserInfo(){}

public UserInfo(int uid, String uname, String usex) {

super();

this.uid = uid;

this.uname = uname;

this.usex = usex;

}

* */

private static void processConstructor(StringBuffer sb,String tableName) {

sb.append("\tpublic "+tableName+"(){}\r\n");

sb.append("\tpublic "+tableName+"(");

String link="";        for (int i = 0; i

sb.append(link + colTypes[i] + " " + colnames[i]);

link=",";

}

sb.append("){\r\n");        for (int i = 0; i

sb.append("\t\tthis."+colnames[i]+"="+colnames[i]+";\r\n");

}

sb.append("\t}\r\n");

}

数据类型转换的方法:

/**

* 该方法用于类型转换

* @param dbType:传入的数据类型

* @author one

* */

private static String sqlTypeToJava(String dbType) {

dbType = dbType.toUpperCase();        switch (dbType) {        case "VARCHAR":        case "VARCHAR2":        case "CHAR":            return "String";        case "NUMBER":        case "DECIMAL":            return "double";        case "INT":        case "SMALLINT":        case "INTEGER":            return "int";        case "BIGINT":            return "int";        case "DATETIME":        case "TIMESTAMP":        case "DATE":            return "Date";        default:            return "Object";

}

}

创建文件夹,写入项目:

/**

* 创建java 文件 将生成的属性 get/set 方法 保存到 文件中 markerBean

*

* @author one

* @packageName fanshe

* @param className

*            类名称

* @param content

*            类内容 包括属性 getset 方法     */

public static void createFloder(String className, String content, String packageName) {

String folder = System.getProperty("user.dir") + "/src/" + packageName + "/";

File file = new File(folder);        if (!file.exists()) {

file.mkdirs();

}

String fileName = folder + className + ".java";        try {

File newdao = new File(fileName);

FileWriter fw = new FileWriter(newdao);

fw.write("package\t" + packageName.replace("/", ".") + ";\r\n");

fw.write(content);

fw.flush();

fw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

生成实体类:

/**

* 该方法生成Entity

* @param tablename:表名集合

* @param packname:要生成的路径

* @author one

* */

public static List createEntity(List tableNames,String packname) throws Exception{

Connection conn=null;

PreparedStatement pstmt=null;

ResultSetMetaData rsmd = null;        //每个表的表名

String eveTableName="";

conn=mySQLOpen();

//System.out.println("当前数据库下的表的总数:"+tableNames.size());

for (int i = 0; i

StringBuffer sb=new StringBuffer("");            //表名首字母转大写

eveTableName=tableNames.get(i).substring(0, 1).toUpperCase()+tableNames.get(i).substring(1,tableNames.get(i).length());

sb.append("public class "+eveTableName+" {\n\n");            //查询语句

String sql="select * from "+eveTableName;

pstmt=conn.prepareStatement(sql);            //获得表的元数据

rsmd=pstmt.getMetaData();             // 每个表共有多少列

int size = rsmd.getColumnCount();            //把字段放在集合里面

colnames = new String[size];

colTypes = new String[size];

upperColnames = new String[size];

for (int j = 0; j

String columnName = rsmd.getColumnName(j+1);//每列的字段名

colnames[j]=columnName;

String colunmType=sqlTypeToJava(rsmd.getColumnTypeName(j+1));//每列的类型

colTypes[j]=colunmType;                 //接下来做驼峰命名的字段

String upperColumnNam= rsmd.getColumnName(j+1).substring(0,1).toUpperCase()+

rsmd.getColumnName(j+1).substring(1,rsmd.getColumnName(j+1).length());

upperColnames[j]=upperColumnNam;

}

processAllField(sb); //生成字段

processAllMethod(sb); //生成set,get方法

processConstructor(sb,eveTableName); //生成构造函数

//添加最后一个括号

sb.append("}");            //创建文件夹,sb.toString(),把数据扔进去            createFloder(eveTableName,sb.toString(),packname);

listArr.add(sb);

}        //关闭连接

mySQLClose(null,pstmt,conn);        return listArr;

}

展示数据的方法:

/**

* 展示

* */

public static void goCreate(){        try {

List result=createEntity(getTableFromNowConnectDB(),"vo2");            for (int i = 0; i

System.out.println("============第"+(i+1)+"个表的实体类生成============");

System.out.println(result.get(i));

}

} catch (Exception e) {

e.printStackTrace();

}

}

效果如下:

文件夹创建效果:

java实体类生成mysql表_自己简单写的JDBCUtils,可以根据当前数据库下面的表生成java实体类。...相关推荐

  1. excel生成mysql语句_通过SQL语句直接实现Excel与数据库的导入导出

    1.在SQL数据库中直接从Excel里面查询数据: select \* from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DA ...

  2. mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...

    [单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...

  3. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  4. datafactory生成mysql数据_测试数据生成工具DataFactory的使用

    DATA FACTORY的使用 Data Factor y是一个数据库测试数据生成工具. Data Factory主要可以利用在以下两个方面:1.按照数据表中要求数据的格式,快速产生标准或不标准的测试 ...

  5. word可以直接导入mysql嘛_如何把word文档导入到数据库中——java POI

    本文方法借鉴于https://www.cnblogs.com/ljysy/p/10574197.html 在经过朋友的指导下,在处理文档的方式上有所不同. 我的数据库使用的是SQL server,这篇 ...

  6. Hibernate_1_配置文件详解_基础案例_Hibernate工具类_API详解_持久化类编写规则

    Hibernate( ORM框架 ) Hibernate是一个数据持久化层的ORM框架. 它通过JavaBean, 数据库中的表与自身的映射关系达到表中数据的增删改查 特性 1.对JDBC访问数据库的 ...

  7. java移动接口发短信_天天都会写接口(interface),但它的用途和好处有多少人能说得清楚?

    本文同步Java知音社区,专注于Java 作者:nvd11 http://blog.csdn.net/nvd11/article/details/41129935 一. 对接口的三个疑问 很多初学者都 ...

  8. java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚

    之前在整理Redis的五大数据结构的时候,其中提到了list.set等知识点的时候,就想起来刚上大学那会的青涩时光,抱着一本Java生啃得时候得傻样,跟女朋友交流的时候,她说那你怎么不也顺便整理一下啊 ...

  9. java移动接口发短信_天天都会写接口,但它的用途和好处有多少人能说得清楚?...

    一. 对接口的三个疑问 很多初学者都大概清楚interface是什么, 我们可以定义1个接口, 然后在里面定义一两个常量(static final) 或抽象方法. 然后以后写的类就可以实现这个接口, ...

  10. oracle 表连接 大表小表_优化必备基础:Oracle中常见的三种表连接方式

    在Oracle SQL语句中,如果from后面有多个表时,表的连接方式是一个很重要的考量. 从Oracle 6开始,优化器就支持下面4种表连接方式: - 嵌套循环连接(Nested Loop Join ...

最新文章

  1. 两个关于水花的测试。
  2. Git入门第一集!(Git的下载地址、下载资源)
  3. Spring学习7之自动装配Bean03
  4. 一点通路由器模拟软件最新版_驾校宝典通最新版2020下载-驾校宝典通手机版 v1.0.2免费版...
  5. ACM组队训练记录(Grooming)
  6. 前端学习(64):css继承属性小结
  7. 请问孩子厌学的话该怎么办?
  8. 通过名称识别和处理弹出窗口
  9. 滚动字幕特效大全代码 (转)
  10. Ubuntu 解锁被锁定的账号
  11. oracle中分组函数取百分比,Oracle之组函数、分组统计-Oracle
  12. 几种设置开机启动的方法
  13. 什么是生命周期?Activity生命周期的三种状态
  14. an tu tu html5 test,法语TEF基础阶段测试题和答案(下)
  15. STM32+RS485+Modbus-RTU(主机模式+从机模式)-标准库/HAL库开发
  16. 使用kaggle GPU跑自己的模型
  17. 面试自我介绍如何介绍呢?
  18. 高中数学如何学好,必修一函数的单调性与最值(习题)
  19. oracle查询前五条数据库,Oracle查询前几条数据的方法详解
  20. Win10配置JDK环境变量电脑重启后java、javac命令无法使用

热门文章

  1. java8中的接口与时间操作
  2. WebAPI Delete方法报错405 Method Not Allowed
  3. PHP操作Mysql疑问?
  4. Openwrt 路由器挂载摄像头教程
  5. 图像质量评价Code和Dataset
  6. 【VS2010学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之WM_TIMER消息处理函数的添加问题)
  7. 【LeetCode】【字符串】题号:*481. 神奇字符串
  8. 【LeetCode】【字符串】题号:*299. 猜数字游戏
  9. 【LeetCode】【字符串】题号:*344. 反转字符串
  10. ENVI实验教程(4)实验四、遥感图像预处理—融合、镶嵌、裁剪