- 浏览: 1147107 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
做网站时,感觉数据库的设计比较重要,当花了很多时间设计好数据库时,就希望有一个能自动生成bean的工具,虽然Eclipse的插件能反向生成bean和hibernate的配置文件,但总感觉不够灵活,不够小到随意简单使用。但又实在不想去敲代码写一个个很多属性的bean。网上没找着现成合适的,于是就花了点时间自己写了个生成工具玩玩,也希望能给需要的朋友们一点点帮助~~
直接放出可执行的exe程序和源码了,喜欢且需要的朋友尽管拿去用。
MySQLToBean.java
package org.just.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JCheckBox; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import java.awt.Color; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /** * 此类用来将mysql的表直接生成Bean * * @author childlikeman@gmail.com */ public class MySQLToBean extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JCheckBox checkBox; Properties p = new Properties(); String configFile = "config.ini"; private JLabel lblNewLabel_4; public MySQLToBean() { setResizable(false); setTitle("MySQL生成javabean小工具"); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setBounds(100, 100, 484, 324); JPanel panel = new JPanel(); getContentPane().add(panel, BorderLayout.CENTER); panel.setLayout(null); txtLocalhost = new JTextField(); txtLocalhost.setText("localhost"); txtLocalhost.setBounds(146, 10, 147, 21); panel.add(txtLocalhost); txtLocalhost.setColumns(10); JLabel lblIp = new JLabel("IP:"); lblIp.setBounds(80, 13, 30, 15); panel.add(lblIp); JLabel label = new JLabel("数据库:"); label.setBounds(80, 42, 54, 15); panel.add(label); textField = new JTextField(); textField.setBounds(146, 39, 147, 21); panel.add(textField); textField.setColumns(10); JLabel label_1 = new JLabel("表名:"); label_1.setBounds(80, 127, 54, 15); panel.add(label_1); textField_1 = new JTextField(); textField_1.setBounds(146, 124, 147, 21); panel.add(textField_1); textField_1.setColumns(10); JLabel label_2 = new JLabel("包名:"); label_2.setBounds(79, 156, 54, 15); panel.add(label_2); txtComyourcom = new JTextField(); txtComyourcom.setText("com.yourcom.bean"); txtComyourcom.setBounds(146, 155, 147, 21); panel.add(txtComyourcom); txtComyourcom.setColumns(10); JLabel lblNewLabel = new JLabel("输出目录:"); lblNewLabel.setBounds(80, 190, 65, 15); panel.add(lblNewLabel); textField_3 = new JTextField(); textField_3.setBounds(146, 186, 147, 21); panel.add(textField_3); textField_3.setColumns(10); checkBox = new JCheckBox("生成包结构目录"); checkBox.setSelected(true); checkBox.setBounds(145, 213, 147, 23); panel.add(checkBox); JLabel lblNewLabel_1 = new JLabel("可以指定表名,也可以不指定"); lblNewLabel_1.setBounds(303, 127, 176, 15); panel.add(lblNewLabel_1); JLabel lblNewLabel_2 = new JLabel("* 数据库名"); lblNewLabel_2.setForeground(Color.RED); lblNewLabel_2.setBounds(303, 42, 66, 15); panel.add(lblNewLabel_2); JLabel lblNewLabel_3 = new JLabel("* 包结构"); lblNewLabel_3.setForeground(Color.RED); lblNewLabel_3.setBounds(303, 158, 79, 15); panel.add(lblNewLabel_3); JButton button = new JButton("执行"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { go(); } }); button.setBounds(145, 242, 93, 23); panel.add(button); textField_4 = new JTextField(); textField_4.setText("123456"); textField_4.setBounds(145, 93, 147, 21); panel.add(textField_4); textField_4.setColumns(10); txtRoot = new JTextField(); txtRoot.setText("root"); txtRoot.setBounds(145, 66, 148, 21); panel.add(txtRoot); txtRoot.setColumns(10); JLabel label_3 = new JLabel("用户名:"); label_3.setBounds(80, 69, 54, 15); panel.add(label_3); JLabel label_4 = new JLabel("密码:"); label_4.setBounds(80, 96, 54, 15); panel.add(label_4); lblNewLabel_4 = new JLabel(""); lblNewLabel_4.setForeground(Color.RED); lblNewLabel_4.setBounds(248, 242, 204, 23); panel.add(lblNewLabel_4); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { super.windowClosing(e); export(); System.exit(0); } }); inport(); } static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private JTextField txtLocalhost; private JTextField textField; private JTextField textField_1; private JTextField txtComyourcom; private JTextField textField_3; private JTextField textField_4; private JTextField txtRoot; /** * @param args */ public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); } EventQueue.invokeLater(new Runnable() { public void run() { try { MySQLToBean frame = new MySQLToBean(); frame.setLocationRelativeTo(null); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } private void inport() { File config = new File(configFile); if (config.exists()) { try { InputStream is = new FileInputStream(config); p.load(is); is.close(); setUIVal(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { try { config.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } } public void setUIVal() { txtLocalhost.setText(p.getProperty("host", "localhost")); textField.setText(p.getProperty("database", "")); txtRoot.setText(p.getProperty("user", "root")); textField_4.setText(p.getProperty("pass", "123456")); txtComyourcom.setText(p.getProperty("packname", "com.youcom.bean")); textField_3.setText(p.getProperty("dirstr", "")); textField_1.setText(p.getProperty("tablename", "")); } private void export() { String host = txtLocalhost.getText(); String database = textField.getText(); String user = txtRoot.getText(); String pass = textField_4.getText(); String packname = txtComyourcom.getText(); String dirstr = textField_3.getText();// 空表示当前目录 String tablename = textField_1.getText(); p.setProperty("host", host); p.setProperty("database", database); p.setProperty("user", user); p.setProperty("pass", pass); p.setProperty("packname", packname); p.setProperty("dirstr", dirstr); p.setProperty("tablename", tablename); try { OutputStream out = new FileOutputStream(configFile); p.store(out, "退出保存文件," + sdf.format(new Date())); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void setTips(String msg) { lblNewLabel_4.setText(msg); } public void go() { String host = txtLocalhost.getText(); String database = textField.getText(); if (database.length() == 0) { setTips("数据库名必填"); return; } String user = txtRoot.getText(); String pass = textField_4.getText(); String packname = txtComyourcom.getText(); String dirstr = textField_3.getText();// 空表示当前目录 String tablename = textField_1.getText(); boolean createPackage = checkBox.getSelectedObjects() != null; System.out.println(createPackage); if (dirstr != null && !dirstr.isEmpty()) { if (!dirstr.endsWith("/")) { dirstr += "/"; } } File dir = new File(dirstr); if (createPackage) { dir = new File(dirstr + packname.replaceAll("\\.", "/")); if (!dir.exists()) { dir.mkdirs(); } } String outputdir = dir.getAbsolutePath();// bean的生成目录 Connection conn = null; try { conn = DBManager.mysql(host, database, user, pass); if (tablename.length() > 0) { parseTableByShowCreate(conn, tablename, packname, outputdir); } else { parseAllTable(conn, packname, outputdir); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); setTips("找不到MySQL的jar包"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 开始处理生成所有表 如果不传入表名,表示将数据库中所有表生成bean; 可以指定表名生成bean; */ public void parseAllTable(Connection conn, String packname, String outputdir) { String sql = "show tables"; ResultSet rs = DBManager.query(conn, sql); try { while (rs.next()) { String tablename = rs.getString(1); parseTableByShowCreate(conn, tablename, packname, outputdir); } DBManager.close(conn, null, rs); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 通过 mysql的 show create table TABLE_NAME逆向生成Bean; * * @param conn * @param tname * @param outputdir * @param packname */ private void parseTableByShowCreate(Connection conn, String tablename, String packname, String outputdir) { StringBuilder classInfo = new StringBuilder("\t/**\r\n\t*"); boolean shouldCloseConn = false; String sql = "show create table " + tablename; ResultSet rs = null; try { rs = DBManager.query(conn, sql); StringBuilder fields = new StringBuilder(); StringBuilder methods = new StringBuilder(); while (rs.next()) { String sqlstr = rs.getString(2); String lines[] = sqlstr.split("\r\n"); for (int i = 0; i < lines.length; i++) { String line = lines[i]; // System.out.println(line); // System.out.println("------------"); String regex = "\\s*`([^`]*)`\\s*(\\w+[^ ]*)\\s*(NOT\\s+NULL\\s*)?(DEFAULT\\s*([^ ]*|NULL|'0'|''|CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)\\s*)?(COMMENT\\s*'([^']*)')?\\s*,\\s*"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(line); while (m.find()) { String field = m.group(1); String type = typeTrans(m.group(2)); String cmt = m.group(7); fields.append(getFieldStr(field, type, cmt)); methods.append(getMethodStr(field, type)); // System.out.println(field); // System.out.println(type); // System.out.println(cmt); } if (i == lines.length - 1) { classInfo.append("此类由" + getClass().getSimpleName() + "工具自动生成\r\n"); classInfo.append("\t*备注(数据表的comment字段):"); int index = line.indexOf("COMMENT="); if (index != -1) { String tmp = line.substring(index + 8); classInfo.append(tmp.replace("'", "")); } else { classInfo.append("无备注信息"); } classInfo.append("\r\n"); classInfo .append("\t*@author childlikeman@gmail.com,http://t.qq.com/lostpig\r\n"); classInfo.append("\t*@since "); classInfo.append(sdf.format(new Date())); classInfo.append("\r\n\t*/\r\n\r\n"); } } } classInfo.append("\tpublic class ") .append(upperFirestChar(tablename)).append("{\r\n"); classInfo.append(fields); classInfo.append(methods); classInfo.append("\r\n"); classInfo.append("}"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { DBManager.close(shouldCloseConn ? conn : null, null, rs); } String packageinfo = "package " + packname + ";\r\n\r\n"; File file = new File(outputdir, upperFirestChar(tablename) + ".java"); System.out.println(file.getAbsolutePath()); try { FileWriter fw = new FileWriter(file); fw.write(packageinfo); fw.write(classInfo.toString()); fw.flush(); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * @param type * @return */ private String getMethodStr(String field, String type) { StringBuilder get = new StringBuilder("\tpublic "); get.append(type).append(" "); if (type.equals("boolean")) { get.append(field); } else { get.append("get"); get.append(upperFirestChar(field)); } get.append("(){").append("\r\n\t\treturn this.").append(field) .append(";\r\n\t}\r\n"); StringBuilder set = new StringBuilder("\tpublic void "); if (type.equals("boolean")) { set.append(field); } else { set.append("set"); set.append(upperFirestChar(field)); } set.append("(").append(type).append(" ").append(field) .append("){\r\n\t\tthis.").append(field).append("=") .append(field).append(";\r\n\t}\r\n"); get.append(set); return get.toString(); } public String upperFirestChar(String src) { return src.substring(0, 1).toUpperCase().concat(src.substring(1)); } private String getFieldStr(String field, String type, String cmt) { StringBuilder sb = new StringBuilder(); sb.append("\t").append("private ").append(type).append(" ") .append(field).append(";"); if (cmt != null) { sb.append("//").append(cmt); } sb.append("\r\n"); return sb.toString(); } /** * mysql的类型转换到java 类型参考文章 * http://hi.baidu.com/wwtvanessa/blog/item/9fe555945a07bd16d31b70cd.html */ public String typeTrans(String type) { if (type.contains("tinyint")) { return "boolean"; } else if (type.contains("int")) { return "int"; } else if (type.contains("varchar") || type.contains("date") || type.contains("time") || type.contains("datetime") || type.contains("timestamp") || type.contains("text") || type.contains("enum") || type.contains("set")) { return "String"; } else if (type.contains("binary") || type.contains("blob")) { return "byte[]"; } else { return "String"; } } }
DBManager.java
package org.just.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; //本类专门用来连接数据库,可以作为固定的工具类使用(记下来即可) public class DBManager { // 定义一个静态的连接对象用来连接数据库 // private static Connection conn = null; // 定一个静态的语句对象,用来执行sql语句 // private static Statement stmt = null; // 定义一个静态的结果集对象用来存放执行sql语句后查询得到的结果 // private static ResultSet rs = null; /** * 连接数据库的方法 * * @return conn 返回一个连接对象 */ public static Connection mssql(String url, String user, String pass) { Connection conn = null; try { // 1、加载连接驱动 // "jdbc:odbc:bookdemo" Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 2、连接到数据库(获得连接对象) // 通过连接管理器(DriverManager)类的一个方法来获得连接对象,里面的参数表示我们连接到数据源bookdemo conn = DriverManager.getConnection(url, user, pass); } catch (ClassNotFoundException e) { // 以堆栈的方式将错误信息打印出来 e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; // 将连接对象返回 } /** * 连接数据库的方法 * * @return conn 返回一个连接对象 * @throws ClassNotFoundException * @throws SQLException */ public static Connection mysql(String url, String user, String pass) throws ClassNotFoundException, SQLException { Connection conn = null; // 1、加载连接驱动 // "jdbc:odbc:bookdemo" Class.forName("com.mysql.jdbc.Driver"); // 2、连接到数据库(获得连接对象) // 通过连接管理器(DriverManager)类的一个方法来获得连接对象,里面的参数表示我们连接到数据源bookdemo conn = DriverManager.getConnection(url, user, pass); return conn; // 将连接对象返回 } /** * 动漫网的mysql数据库连接 * @throws SQLException * @throws ClassNotFoundException */ public static Connection mysql(String host, String database, String user, String pass) throws ClassNotFoundException, SQLException { String url = "jdbc:mysql://" + host + "/" + database + "?useUnicode=true&characterEncoding=UTF-8"; return mysql(url, user, pass); } /** * 本函数用来执行用户传入的sql语句(仅限于select语句) * * @param sql * 传入的sql语句,等待执行 * @return 返回执行sql语句后的结果集对象 */ public static ResultSet query(Connection conn, String sql) { ResultSet rs = null; try { // 3、通过连接对象创建一个语句对象stmt,用来执行sql语句 Statement stmt = conn.createStatement(); // 4、执行sql语句,得到一个rs(结果集对象) rs = stmt.executeQuery(sql); } catch (Exception e) { // 错误处理,暂时不用理会 e.printStackTrace(); } return rs; // 将查询得到的结果集对象返回 } /** * 本方法用来执行更新语句,并返回影响了多少行(insert,update,delete) * * @param sql * 传入的sql语句,等待执行 * @return 返回执行sql语句后的结果集对象 */ public static int update(Connection conn, String sql) { // 执行sql语句前先连接到数据库 Statement stmt = null; int i = 0; try { // 通过连接对象创建一个语句对象stmt,用来执行sql语句 stmt = conn.createStatement(); // 执行更新语句,并返回影响了多少行 i = stmt.executeUpdate(sql); } catch (Exception e) { // 错误处理,暂时不用理会 e.printStackTrace(); } finally { try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return i; } public static void close(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
- MySQLToBean.rar (752.2 KB)
- 下载次数: 528
评论
7 楼
joyeye
2014-09-16
while (rs.next()) { String sqlstr = rs.getString(2); String lines[] = sqlstr.split("\n"); for (int i = 0; i < lines.length; i++) { String line = lines[i].trim(); // System.out.println("i is " + i); // System.out.println(line); // System.out.println("------------"); String regex = "\\s*`(?<field>[^`]*)`\\s*(?<type>\\w+[^ ]*)\\s*[\\s\\S]*?(COMMENT\\s*'(?<cmt>[^']*)')*?\\s*,\\s*"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(line); while (m.find()) { String field = m.group("field"); String type = typeTrans(m.group("type")); String cmt = m.group("cmt"); fields.append(getFieldStr(field, type, cmt)); methods.append(getMethodStr(field, type)); // System.out.print(field); // System.out.print("\t"); // System.out.print(type); // System.out.print("\t"); // System.out.println(cmt); } if (i == lines.length - 1) { classInfo.append("此类由" + getClass().getSimpleName() + "工具自动生成\r\n"); classInfo.append("\t*备注(数据表的comment字段):"); int index = line.indexOf("COMMENT="); if (index != -1) { String tmp = line.substring(index + 8); classInfo.append(tmp.replace("'", "")); } else { classInfo.append("无备注信息"); } classInfo.append("\r\n"); classInfo.append("\t*@author \r\n"); classInfo.append("\t*@since "); classInfo.append(sdf.format(new Date())); classInfo.append("\r\n\t*/\r\n\r\n"); } } }
6 楼
joyeye
2014-09-16
show create table <TABLENAME> 可以考虑用 DESCRIBE <TABLENAME> 替代
就不需要正则了
就不需要正则了
5 楼
yonglr8992
2014-07-10
支持,很好,正好用得上。
4 楼
liu8563525
2013-07-30
很好很强大,支持楼主
3 楼
qja
2013-07-26
qja 写道
点错了哈
2 楼
qja
2013-07-26
1 楼
liumingzai
2012-03-29
发表评论
-
MySQL中GBK与UTF-8的区别
2013-02-11 17:53 1595在MySQL中,如果数据库只需要支持一般中文,数据量很大,性 ... -
MySQL中Utf8_general_ci 和 utf8_unicode_ci的区别
2013-02-11 17:51 1248对中、英文来说没有实质的差别。 utf8_gener ... -
Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUM
2012-11-09 11:13 7450SHOW VARIABLES LIKE 'coll%'; ... -
修改MySQL字符编码
2012-11-07 08:24 1003修改编码其实是为了支持中文~ 1. 编译级别。由于缺乏 ... -
INNER LEFT RIGHT JOIN
2012-09-07 10:35 1145CREATE TABLE `a` ( `a1` VARC ... -
MySQL设置字符集为UTF8(Windows版)
2012-08-07 08:40 8922Windows版MySQL设置字符集全部为utf8的方式 ... -
【绿色MySQL设置技巧】
2012-07-07 21:31 12121. mysql 远程连接数据 ... -
查询表Y中数据不存在与表X中的数据使用Left JOIN
2012-06-26 12:39 1096看看我写的对不对,查询接着显示表Y中的数据8,4,p 表X有 ... -
mysql 性能优化方案
2012-04-28 17:18 1022网上有不少mysql 性能优 ... -
设置自动清理mysql binlog日志和手动删除的方法
2012-04-28 17:17 1647MYSQL主从复制(replication)采用 RBR 模式 ... -
自增序列产生器的实现思路
2012-04-28 11:45 933l 需求 u 实现MySQL自带的字段值自动增 ... -
InnoDB引擎表的主键选型
2012-04-28 11:41 1424【导读】 MySQL采用开放可插入式存储引擎架构,提供 ... -
数据库设计范式
2012-04-14 11:05 1012数据库设计三范式 第一范式(1NF):数据库表中的字段都是单一 ... -
11 条重要的数据库设计规则
2012-04-14 11:03 989在你开始阅读这篇文章 ... -
11 步教你选择最稳定的 MySQL 版本
2012-04-01 19:59 1102MySQL开源数据库有多个重要分支,目前拥有的分支分别为:My ... -
MySQL 分区
2012-03-06 10:31 1201MYSQL 存储过程,定义告 ... -
POWERDESIGNER 教程
2012-02-26 12:03 1476一)概念数据模型 目标 : 本文主要介绍Powe ... -
powerdesigner 使用的十五个问题
2012-02-24 14:22 1325PowerDesigner的主要作用一般还是数据库建模,并生成 ... -
数据库设计原则
2012-02-21 07:41 1029原始单据与实体之间的关系 可以是一对一、一对多、多对多的关 ... -
修改mysql root的密码
2012-01-20 08:38 1005mysql> UPDATE mysql. ...
相关推荐
3、 支持批量生成javabean。 4、 支持重写“toString”方法(返回json格式字符串)。 5、 支持国际化。 6、 支持返回字段属性数组。 7、 支持java元注释。 8、 支持生成ibatis配置文件。 9、 支持生成不同文件...
本工具“mysql, sqlserver, Oracle 数据库生成javabean小工具”正是为了解决开发者手动编写javabean时的繁琐工作,它能够自动根据数据库中的表结构生成对应的javabean文件。 1. **数据库连接**: 工具支持三种主流...
为了提高开发效率,各种自动化工具应运而生,其中“根据数据库表字段自动生成JavaBean工具”便是其中之一。这个工具能够帮助开发者快速地从数据库表结构生成对应的JavaBean类,极大地减少了手动编写代码的工作量,...
`GeneratorSqlmap.java`是主程序,它读取并解析`generatorConfig.xml`中的配置,然后调用相应的代码生成库或框架(如MyBatis的MyBatis Generator或Apache的DBUtils等)来生成JavaBean和DAO代码。JavaBean通常代表...
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
数据库表生成JavaBean工具是一种非常实用的开发辅助工具,它能极大地提高开发效率,尤其是在处理大量数据模型对象时。此工具允许开发者连接到数据库,自动获取数据库中的表结构,并将其转换为符合Java Bean规范的类...
本项目"javaweb+mysql数据库实现注册登录程序"旨在教你如何使用Java Web技术和MySQL数据库来创建这样一个系统。以下是这个项目涉及到的关键知识点: 1. **Java Web基础**:Java Web开发主要涉及Servlet、JSP(Java...
`generator-mysql`是一个实用工具,它基于`generator-mybatis`项目,用于自动从MySQL数据库生成实体类,大大简化了开发过程,特别是在处理大量数据表时。这个工具的亮点在于它不仅生成实体类,还能够生成字段的注释...
先看好了在下,别TM下了后骂人,恶心,我共享不是为了共享了给你骂的,程序只写了一半,手头事很多,而且草草了事写的为了应付项目,没办法,现在只支持mysql数据库,可以生成实体bean,生成BO层的bean,DAO层的bean...
2. **选择表**:在连接成功后,用户可以选择需要生成JavaBean的数据库表或视图。 3. **配置JavaBean**:用户可以设定生成的JavaBean的命名规则、包路径以及是否生成toString()、equals()和hashCode()方法等。 4. **...
#### 四、使用JavaBean连接MySQL数据库 另一种方法是使用JavaBean来封装数据库连接逻辑,这种方式可以使代码更加模块化和易于维护。 1. **创建JavaBean类:** ```java package conn; import java.sql.*; public ...
用frame写的一款小软件 通过连接数据库 得到数据库中的表 自动生成生成Javabean 方便开发时候书写Javabean 并且字段跟数据库绝对一致 暂支持oracle mysql 内附源码 如有感觉不妥的地方 可自行更改源码
13、修复使用MySQL数据库生成的数据长度不正确的问题 14、生成自定义文件功能可以不配置数据源,不选择自定义模板生成文件,可单独用于文件操作,只要不选择模板,JSON参数中也不配置模板就不会连数据库 15、修复...
TableGo可以根据数据库表结构自动生成JavaBean、MyBaits的Mapper映射配置文件、数据库设计文档,更重要的是可以根据每个项目的不同开发框架编写自定义模板生成各模块的结构性代码,让开发人员的开发效率提高60%以上...
下载了绝对不后悔,100%好用,支持Mysql Oracle SQL Server ,PostgreSQl.等数据库 还有各种集成的小工具 表名互转驼峰,,,,Json.XML 字符串格式化..JSon与XMl互转,String字符串拼接等功能
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
根据数据库表字段生成javabean的Eclipse插件 目前支持mysql oracle 数据库 支持生成Ibatis 配置文件 支持生成国际化配置文件,根据数据库字段描述(oracle) 支持批量生成javabean