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 com.onedear.util.database.DataBaseType;

/**

* 数据库工具类

*

* @author onedear

* @data:2010-10-21 下午06:12:39

*/

public class DBUtil {

public static final int SQLSERVER = 1;

public static final int MYSQL = 2;

public static final int ORACLE = 3;

private static final String LINE = "\r\n";

private static final String TAB = "\t";

/**

* 用于调试,懒得写相应的参数

*

* @return

* @throws SQLException

* @throws ClassNotFoundException

*/

public static Connection getConnection() throws ClassNotFoundException, SQLException {

return getConnection("192.168.0.161:1997", "ETForMonitor_V2", "sa",

"password", DBUtil.SQLSERVER);

}

/**

*

* 通过jdbc获取相应的数据库链接connection

*

* @param ipport

* ip+port ,eg.: 192.168.0.161:1997

* @param dbName

* databaseName ,eg. : ETForMonitor_V2

* @param username

* eg.:sa

* @param password

* eg. :password

* @param type

* 请看本类的静态变量

* @return

* @throws ClassNotFoundException

* @throws SQLException

*/

public static Connection getConnection(String ipport, String dbName,

String username, String password, int type)

throws ClassNotFoundException, SQLException {

String jdbcString = null;

if (type == SQLSERVER) {

jdbcString = "jdbc:jtds:sqlserver://" + ipport + ";databaseName="

+ dbName;

Class.forName("net.sourceforge.jtds.jdbc.Driver");

} else if (type == MYSQL) {

jdbcString = "jdbc:mysql://" + ipport + "/" + dbName;

Class.forName("org.gjt.mm.mysql.Driver");

} else if (type == ORACLE) {

jdbcString = "jdbc:oracle:thin:@" + ipport + ":" + dbName;

Class.forName("oracle.jdbc.driver.OracleDriver");

}

Connection connection = null;

connection = DriverManager

.getConnection(jdbcString, username, password);

return connection;

}

/**

* 数据库表生成相应的java类,生成规则

* 类名= 表名(第一个字母大写)

* 属性名= 数据库列名

* get/set方法 = 根据标准生成

* 其中生成的基本类型均为包装类,例如Integer , Long , Boolean , String

* @param connection

* @param tableName

* @param dbType

* @param path

* @param isCreateFile

* @return

* @throws SQLException

*/

public static String table2pojo(Connection connection, String tableName,

int dbType, String path , boolean isCreateFile) throws SQLException {

String sql = "select * from " + tableName + " where 1 <> 1";

PreparedStatement ps = null;

ResultSet rs = null;

ps = connection.prepareStatement(sql);

rs = ps.executeQuery();

ResultSetMetaData md = rs.getMetaData();

int columnCount = md.getColumnCount();

StringBuffer sb = new StringBuffer();

tableName = tableName.substring(0, 1).toUpperCase() +tableName.subSequence(1, tableName.length());

sb.append("public class " + tableName + " {");

sb.append(LINE);

for (int i = 1; i <= columnCount; i++) {

sb.append(TAB);

sb.append("private "

+ DataBaseType.getPojoType(md.getColumnTypeName(i)) + " "

+ md.getColumnName(i) + ";");

// System.out.println("name : " + md.getColumnName(i) +

// " , type :"

// + md.getColumnTypeName(i));

sb.append(LINE);

}

for (int i = 1; i <= columnCount; i++) {

sb.append(TAB);

String pojoType = DataBaseType.getPojoType(md.getColumnTypeName(i));

String columnName = md.getColumnName(i);

String getName = null;

String setName = null;

if (columnName.length() > 1) {

getName = "public "+pojoType+" get" + columnName.substring(0, 1).toUpperCase()

+ columnName.substring(1, columnName.length()) + "() {";

setName = "public void set" + columnName.substring(0, 1).toUpperCase()

+ columnName.substring(1, columnName.length()) + "("

+ pojoType + " " + columnName + ") {";

} else {

getName = "public get" + columnName.toUpperCase() + "() {";

setName = "public set" + columnName.toUpperCase() + "(" + pojoType

+ " " + columnName + ") {";

}

sb.append(LINE).append(TAB).append(getName);

sb.append(LINE).append(TAB).append(TAB);

sb.append("return " + columnName +";");

sb.append(LINE).append(TAB).append("}");

sb.append(LINE);

sb.append(LINE).append(TAB).append(setName);

sb.append(LINE).append(TAB).append(TAB);

sb.append("this." + columnName + " = " + columnName +";" );

sb.append(LINE).append(TAB).append("}");

sb.append(LINE);

}

sb.append("}");

System.out.println(sb.toString());

if(isCreateFile)

FileUtils.stringToFile(null,tableName +".java" , sb.toString());

return null;

}

public static void main(String[] args) throws SQLException, ClassNotFoundException {

Connection con = getConnection();

table2pojo(con, "PlayBackVisitorControl", DBUtil.SQLSERVER, "" , true);

}

}

生成pojo mysql_通过数据库表反向生成pojo类相关推荐

  1. PowerDesigner 中SQL文件、数据库表反向生成PDM

    1      反向生成PDM 1)        创建一个空的PDM模型(选择对应的DBMS): 2)        选择[Database]--[Update Model from Database ...

  2. eclipse中利用hibernate插件,根据数据库表反向生成Javabean

    借鉴自:https://blog.csdn.net/wangpeng047/article/details/6877720: https://www.cnblogs.com/quyanhui/p/42 ...

  3. java 导出word换行_Java 导出数据库表信息生成Word文档

    一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...

  4. Intellij IDEA 通过数据库表逆向生成带注释的实体类文件超级详细步骤,附详细解决方案

    Intellij IDEA 通过数据库表逆向生成带注释的实体类文件超级详细步骤,附详细解决方案 参考文章: (1)Intellij IDEA 通过数据库表逆向生成带注释的实体类文件超级详细步骤,附详细 ...

  5. 第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档

    一.目标 下图是我们要实现的目标: 二.实现 原理非常简单,首先制作样式模版,可以参照文章2,将排版好的Word另存为html,然后复制粘贴到aspx页面中,然后从数据库读取表以及字段信息,动态的插入 ...

  6. 导出数据库表信息生成Word文档(数据字典)

    平时多积累一些好工具,才能提高工作效率,早点下班 1. 关键字百度 Java 导出数据库表信息生成Word文档 gitee地址 2.拉取,运行 2.1 idea识别.导入maven工具 2.2 下载完 ...

  7. 导出数据库表信息生成Word文档

    一.背景描述 系统上线或者交付,或者需要提供整理数据库表信息,如果一个个整理未免麻烦,接下来一个demo示例如何用JAVA导出Mysql数据库表信息生成Word文档. 1.项目源码地址:https:/ ...

  8. Java 导出数据库表信息生成Word文档

    一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看生成word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导出数 ...

  9. 根据数据库表结构生成Excel表设计——源码设计说明

    根据数据库表结构生成Excel表设计 在系统运维的过程中,很多时候大家都不喜欢改文档,修改了数据库字段后很少同步再更新表设计文档的,这就导致系统运行一段时间后,系统表设计与实际生产跑业务的设计出入很大 ...

最新文章

  1. tensorflow-gpu 常用网址
  2. Windows系统下的各类用户角色
  3. MySql解压版使用
  4. HashSet和HashMap的区别
  5. Python-OpenCV 笔记8 -- PIL.Image和OpenCV图像格式转换
  6. 如何在visio2010的框图中插入公式?
  7. leetcode - 437. 路径总和 III
  8. Java Spring MVC分层设计
  9. 中低频量化交易策略研发04_ 简单的择时策
  10. 2143亿!2018年天猫“双11”成交总额是这样预测的
  11. python语言输入中文_selenium+python 语言编写问题,在执行时无法输入中文用户名...
  12. 苹果mac应用程序卸载软件:App Uninstaller
  13. t450加固态硬盘教程_联想thinkpad笔记本t450s拆机加装固态硬盘及内存图解
  14. PDF怎么转换成Word?教你两种简单有效的方法
  15. RHCE(三、四)NTP时间服务器、SSH远程加密登录
  16. 计算机病毒分为哪三类
  17. 创蓝253云通讯短信平台变量说明
  18. Java 如何控制项目进度?
  19. 私有云计算机械硬盘还是固态硬盘,硬盘寿命有多久?机械硬盘比固态硬盘更长寿吗?...
  20. 无障碍出行,他让盲人“看得见”

热门文章

  1. DEV—【GridControl添加按钮列】
  2. DBMS_SQL系统包的使用
  3. 【BZOJ 2351】Matrix(Hash)
  4. English trip V1 - 22. My Life Teacher:Emily Key: describe talk about past 过去式
  5. 通过注册表修改IE的Internet选项
  6. 2017-2018-1 20155321 《信息安全系统设计基础》课下作业3
  7. 领域驱动设计(DDD:Domain-Driven Design)
  8. JPA和Hibernate的关系(转)
  9. SAP HANA能否推动实时应用?
  10. 博客搬家了--这次搬进自己家的了,不过博客园的会定时更新!新家地址: http://blog.woshimaijia.com/...