package com.hskj.operateDbUtils;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
*
* @创建时间:2017年3月14日 @创建人:lili @类说明: @修改时间: @修改人: @修改说明:
*/
public class ReadDb {
private static String url = "jdbc:mysql://10.0.1.1/newspaper?useUnicode=true&characterEncoding=utf8&autoReconnect=true";// 简单写法:url
private static String user = "root";
private static String password = "hskj2015";
private static Connection conn = null;
private static Statement stmt = null;
private static ResultSet rs = null;
public static void main(String[] args) {
//System.out.println(">>>");
ReadDb obj = new ReadDb();
obj.getCon();
//obj.query();
List<String> tbList = obj.getTables();//获得数据库里所有表名称
for (String str : tbList) {
System.out.println("///////////////////////");
if("categoryTb".equalsIgnoreCase(str.trim())){
//System.out.println("表名:"+str);
System.out.println("表名:"+str);
List<String> colList = obj.getCols(str);
//for (String col : colList) {
//System.out.println("列:"+col);
//}
//
GenerateClass.generatePojo(str, colList, "f:/pojo/","com.hskj.model");//生成pojo
GenerateClass.generateDao(str, colList, "f:/dao/","com.hskj.dao");//生成 dao
GenerateClass.generateService(str, colList, "f:/service/","com.hskj.service");//生成 dao
}
//break;
}
}
/**
* 获得表信息
*/
public List<String> getTables() {
List<String> tbList = new ArrayList<String>();
try {
DatabaseMetaData m_DBMetaData = conn.getMetaData();
ResultSet tbRs = m_DBMetaData.getTables(null, "%", "%", new String[] { "TABLE" });
String tmp = "";
while (tbRs.next()) {
tbList.add(tbRs.getString("TABLE_NAME"));
// System.out.println(tbRs.getString("TABLE_NAME"));
}
if(null != tbRs ){
tbRs.close();
tbRs = null;
}
} catch (Exception e) {
System.out.println("获得数据库表名错误");
e.printStackTrace();
}
return tbList;
}
/**
* 获得表里所有 字段
*
* @param tbName
*/
public List<String> getCols(String tbName) {
List<String> colsList = new ArrayList<String>();
try {
DatabaseMetaData m_DBMetaData = conn.getMetaData();
ResultSet colRet = m_DBMetaData.getColumns(null, "%", tbName, "%");
String col = "";
String colType = "";
while (colRet.next()) {
col = colRet.getString("COLUMN_NAME");
colsList.add(col);
//colType = colRet.getString("TYPE_NAME");
}
if(null != colRet ){
colRet.close();
colRet = null;
}
} catch (Exception e) {
System.out.println("获得" + tbName + "表字段错误");
e.printStackTrace();
}
return colsList;
}
/**
* 查询
*/
public void query() {
try {
stmt = conn.createStatement();
String sql = "select * from userTb";// dept这张表有deptno,deptname和age这三个字段
rs = stmt.executeQuery(sql);// 执行sql语句
while (rs.next()) {
System.out.print(" --------------- ");
System.out.print(rs.getString("id") + " , ");
System.out.print(rs.getString("account") + " , ");
System.out.println(rs.getString("phoneNumber") + " ");
}
} catch (SQLException e) {
System.out.println("数据操作错误");
e.printStackTrace();
}
}
/**
* 获得连接
*/
public void getCon() {
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载mysq驱动
} catch (ClassNotFoundException e) {
System.out.println("驱动加载错误");
e.printStackTrace();// 打印出错详细信息
}
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
System.out.println("数据库链接错误");
e.printStackTrace();
}
}
/**
* 关闭连接
*/
public void colseCon() {
// 关闭数据库
try {
if (null != rs) {
rs.close();
rs = null;
}
if (null != stmt) {
stmt.close();
stmt = null;
}
if (null != conn) {
conn.close();
conn = null;
}
} catch (Exception e) {
System.out.println("数据库关闭错误");
e.printStackTrace();
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////
package com.hskj.operateDbUtils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.hskj.dao.UserDao;
import com.hskj.dao.UserDaoImpl;
import com.hskj.model.Admin;
import com.hskj.model.User;
import com.hskj.service.UserService;
import com.hskj.utils.BaseDao;
import com.hskj.utils.BasoDaoImpl;
/**
*
* @创建时间:2017年3月14日 @创建人:lili
* @类说明:生成类文件 @修改时间: @修改人: @修改说明:
*/
public class GenerateClass {
// private static String filePath = "f:";
public static void main(String[] args) {
String tbName = "adminTb";
tbName = tbName.replaceAll("(?i)tb", "");
System.out.println(tbName);// 替换所有大小写的tb
tbName = tbName.substring(0, 1).toUpperCase() + tbName.substring(1);
System.out.println(tbName);// 替换所有大小写的tb
generatePojo(tbName, null, "/pojo/", "com.hskj.model");
// if(){
//
// }
}
/**
* 生成dao
*
* @param tbName
* 表名称
* @param colList
* 访表下面相应的字段
*/
public static void generateService(String tbName, List<String> colList, String fileNamePath, String packageStr) {
String replacTbStr = tbName.replaceAll("(?i)tb", "");// 替换所有大小写的tb
String fileName = replacTbStr;
fileName = fileName.substring(0, 1).toUpperCase() + fileName.substring(1);// 首字母大写
fileName = fileName.trim();
try {
// 生成dao文件
File file = new File(fileNamePath + fileName + "Service.java");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
StringBuffer sb = new StringBuffer();
sb.append(" package " + packageStr + ";\r\n");
sb.append(" import java.util.List;\r\n");
sb.append(" import com.hskj.model." + fileName + ";\r\n");
sb.append(" \r\n");
sb.append(" public interface " + fileName + "Service{ \r\n");
sb.append(" \r\n");
//根据id获得Obj
sb.append(" /** \r\n");
sb.append(" * 根据用户id获得Obj对象信息 \r\n");
sb.append(" * \r\n");
sb.append(" * @param id \r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" public "+fileName+" getObjByid(String id); \r\n");
//根据ids删除
sb.append(" /** \r\n");
sb.append(" * 批量删除Obj \r\n");
sb.append(" * \r\n");
sb.append(" * @param ids \r\n");
sb.append(" */ \r\n");
sb.append(" public void delete"+fileName+"ByIds(List<String> ids); \r\n");
//根据条件查询
sb.append(" /** \r\n");
sb.append(" * 根据对象信息条件查询对象信息 \r\n");
sb.append(" * \r\n");
sb.append(" * @param o \r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" public List<"+fileName+"> getDatasBycods("+fileName+" o); \r\n");
//添加和修改
sb.append(" /** \r\n");
sb.append(" * 添加或修改对象 \r\n");
sb.append(" * @param o 对象实体 \r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" public void addOrUpdate"+fileName+"("+fileName+" o); \r\n");
sb.append(" \r\n");
sb.append(" } " + "\r\n");
bw.write(sb.toString());
bw.close();
// 生成daoImpl文件
// 生成dao文件
file = new File(fileNamePath + "/Impl/" + fileName + "ServiceImpl.java");
if (!file.exists()) {
file.createNewFile();
}
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
sb = new StringBuffer();
sb.append(" package " + packageStr + ".Impl;\r\n");
sb.append(" import java.util.List; \r\n");
sb.append(" import java.util.ArrayList; \r\n");
sb.append(" import java.util.Arrays; \r\n");
sb.append(" import javax.persistence.criteria.CriteriaBuilder; \r\n");
sb.append(" import javax.persistence.criteria.CriteriaQuery; \r\n");
sb.append(" import javax.persistence.criteria.Predicate; \r\n");
sb.append(" import javax.persistence.criteria.Root; \r\n");
sb.append(" import org.apache.commons.lang3.StringUtils; \r\n");
sb.append(" import org.springframework.beans.factory.annotation.Autowired; \r\n");
sb.append(" import org.springframework.data.domain.Page; \r\n");
sb.append(" import org.springframework.data.domain.PageRequest; \r\n");
sb.append(" import org.springframework.data.domain.Pageable; \r\n");
sb.append(" import org.springframework.data.jpa.domain.Specification; \r\n");
sb.append(" import org.springframework.stereotype.Service; \r\n");
String tmp0 = packageStr.replace("service", "model");
String tmp1 = packageStr.replace("service", "dao");
sb.append(" import "+ tmp0 +"."+ fileName + "; \r\n");
sb.append(" import "+ tmp1 +"."+ fileName + "Dao; \r\n");
sb.append(" import "+ tmp1 +"."+ fileName + "DaoImpl; \r\n");
sb.append(" import "+ packageStr+"." + fileName + "Service; \r\n");
sb.append(" \r\n");
sb.append(" @Service(\""+replacTbStr+"Service\") \r\n");
sb.append(" public class "+fileName+"ServiceImpl implements "+fileName+"Service{ \r\n");
sb.append(" \r\n");
sb.append(" @Autowired \r\n");
sb.append(" private "+fileName+"Dao "+replacTbStr+"Dao; \r\n");
sb.append(" @Autowired \r\n");
sb.append(" private "+fileName+"DaoImpl "+replacTbStr+"DaoImpl; \r\n");
//根据id获得Obj
sb.append(" /** \r\n");
sb.append(" * 根据用户id获得Obj对象信息 \r\n");
sb.append(" * \r\n");
sb.append(" * @param id \r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" @Override \r\n");
sb.append(" public "+fileName+" getObjByid(String id){ \r\n");
sb.append(" return "+replacTbStr+"Dao.getObjByid(id); \r\n");
sb.append(" } \r\n");
//根据ids删除
sb.append(" /** \r\n");
sb.append(" * 批量删除Obj \r\n");
sb.append(" * \r\n");
sb.append(" * @param ids \r\n");
sb.append(" */ \r\n");
sb.append(" public void delete"+fileName+"ByIds(List<String> ids){ \r\n");
sb.append(" "+replacTbStr+"Dao.delete"+fileName+"(ids); \r\n");
sb.append(" } \r\n");
//根据条件查询
sb.append(" /** \r\n");
sb.append(" * 根据对象信息条件查询对象信息 \r\n");
sb.append(" * \r\n");
sb.append(" * @param o \r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" public List<"+fileName+"> getDatasBycods("+fileName+" o){ \r\n");
sb.append(" return "+replacTbStr+"DaoImpl.getDatasBycods(o); \r\n");
sb.append(" } \r\n");
//添加和修改
sb.append(" /** \r\n");
sb.append(" * 添加或修改对象 \r\n");
sb.append(" * @param o 对象实体 \r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" public void addOrUpdate"+fileName+"("+fileName+" o){ \r\n");
sb.append(" "+replacTbStr+"Dao.save(o); \r\n");
sb.append(" } \r\n");
sb.append(" \r\n");
sb.append(" } " + "\r\n");
bw.write(sb.toString());
bw.close();
System.out.println("Done");
} catch (IOException e) {
System.out.println("写dao文件出错:" + tbName);
e.printStackTrace();
}
}
/**
* 生成dao
*
* @param tbName
* 表名称
* @param colList
* 访表下面相应的字段
*/
public static void generateDao(String tbName, List<String> colList, String fileNamePath, String packageStr) {
String fileName = tbName.replaceAll("(?i)tb", "");// 替换所有大小写的tb
fileName = fileName.substring(0, 1).toUpperCase() + fileName.substring(1);// 首字母大写
fileName = fileName.trim();
try {
// 生成dao文件
File file = new File(fileNamePath + fileName + "Dao.java");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
StringBuffer sb = new StringBuffer();
sb.append(" package " + packageStr + ";\r\n");
sb.append(" import org.springframework.data.jpa.repository.Modifying;\r\n");
sb.append(" import org.springframework.data.jpa.repository.Query;\r\n");
sb.append(" import org.springframework.transaction.annotation.Transactional;\r\n");
sb.append(" import com.hskj.model." + fileName + ";\r\n");
sb.append(" import com.hskj.utils.BaseDao;\r\n");
sb.append(" import java.util.List; \r\n");
sb.append(" \r\n");
sb.append(" public interface " + fileName + "Dao extends BaseDao<" + fileName + ", Integer>{ \r\n");
sb.append(" \r\n");
sb.append(" /** \r\n");
sb.append(" * 根据用户id获得Obj对象信息\r\n");
sb.append(" * @param id\r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" @Query(\"select o from " + fileName + " o where o.id=?1 and o.isDelete = '0' \") \r\n");
sb.append(" public "+fileName+" getObjByid(String id); \r\n");
sb.append(" \r\n");
sb.append(" /** \r\n");
sb.append(" * 批量删除Obj \r\n");
sb.append(" * @param ids \r\n");
sb.append(" */ \r\n");
sb.append(" @Transactional \r\n");
sb.append(" @Modifying \r\n");
sb.append(" @Query(\"update " + fileName + " o set o.isDelete='1' where o.id in(?1)\") \r\n");
sb.append(" public void delete" + fileName + "(List<String> ids); \r\n");
sb.append(" } " + "\r\n");
bw.write(sb.toString());
bw.close();
// 生成daoImpl文件
// 生成dao文件
file = new File(fileNamePath + fileName + "DaoImpl.java");
if (!file.exists()) {
file.createNewFile();
}
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
sb = new StringBuffer();
sb.append(" package " + packageStr + "; \r\n");
sb.append(" import java.util.ArrayList; \r\n");
sb.append(" import java.util.List; \r\n");
sb.append(" import javax.persistence.Query; \r\n");
sb.append(" import org.springframework.stereotype.Repository; \r\n");
sb.append(" import org.springframework.transaction.annotation.Transactional; \r\n");
sb.append(" import com.hskj.model." + fileName + "; \r\n");
sb.append(" import com.hskj.utils.BasoDaoImpl; \r\n");
sb.append(" \r\n");
// sb.append(" @Repository \r\n");
sb.append(" public class " + fileName + "DaoImpl extends BasoDaoImpl{ \r\n");
sb.append(" /** \r\n");
sb.append(" * 根据对象信息条件查询对象信息 \r\n");
sb.append(" * @param o \r\n");
sb.append(" * @return \r\n");
sb.append(" */ \r\n");
sb.append(" public List<"+fileName+"> getDatasBycods("+fileName+" o) { \r\n");
sb.append(" StringBuilder hql = new StringBuilder(); \r\n");
sb.append(" hql.append(\"select o from "+fileName+" o where o.isDelete = '0' \"); \r\n");
sb.append(" Query query = em.createQuery(hql.toString()); \r\n");
sb.append(" List<"+fileName+"> vList = new ArrayList<"+fileName+">(); \r\n");
sb.append(" vList = query.getResultList(); \r\n");
sb.append(" return vList; \r\n");
sb.append(" } \r\n");
sb.append(" } " + "\r\n");
bw.write(sb.toString());
bw.close();
System.out.println("Done");
} catch (IOException e) {
System.out.println("写dao文件出错:" + tbName);
e.printStackTrace();
}
}
/**
* 生成pojo
*
* @param tbName
* 表名称
* @param colList
* 访表下面相应的字段
*/
public static void generatePojo(String tbName, List<String> colList, String fileNamePath, String packageStr) {
// System.out.println("表名:" + tbName);
// String packageStr = "com.hskj.model";
String fileName = tbName.replaceAll("(?i)tb", "");// 替换所有大小写的tb
fileName = fileName.substring(0, 1).toUpperCase() + fileName.substring(1);// 首字母大写
try {
// String content = "This is the content to write into file";
File file = new File(fileNamePath + fileName + ".java");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
StringBuffer sb = new StringBuffer();
sb.append(" package " + packageStr + ";\r\n");
sb.append(" import javax.persistence.*; \r\n");
sb.append(" @Entity \r\n");
sb.append(" @Table(name = \"" + tbName + "\") \r\n");
sb.append(" public class " + fileName + "{ \r\n");
// sb.append(" ");
// 属性
for (String col : colList) {
// System.out.println("列:" + col);.
sb.append(" private String " + col + "; \r\n");
}
// 构造方法
sb.append(" public " + fileName + "() { " + "\r\n");
sb.append(" super(); " + "\r\n");
sb.append(" } " + "\r\n");
String tmp = "";
for (String col : colList) {
if ("id".equalsIgnoreCase(col)) {// 如果是主键id
sb.append(" @Id " + "\r\n");
sb.append(" @Column(name = \"" + col + "\") " + "\r\n");
tmp = col;
tmp = tmp.substring(0, 1).toUpperCase() + tmp.substring(1);// 首字母大写
sb.append(" public String get" + tmp + "() { " + "\r\n");
sb.append(" return id; " + "\r\n");
sb.append(" } " + "\r\n");
sb.append(" public void set" + tmp + "(String id) { " + "\r\n");
sb.append(" this.id = id; " + "\r\n");
sb.append(" } " + "\r\n");
} else {
tmp = col;
tmp = tmp.substring(0, 1).toUpperCase() + tmp.substring(1);// 首字母大写
sb.append(" public String get" + tmp + "() { " + "\r\n");
sb.append(" return " + col + "; " + "\r\n");
sb.append(" } " + "\r\n");
sb.append(" public void set" + tmp + "(String " + col + ") { " + "\r\n");
sb.append(" this." + col + " = " + col + "; " + "\r\n");
sb.append(" } " + "\r\n");
}
}
sb.append(" } " + "\r\n");
bw.write(sb.toString());
bw.close();
System.out.println("Done");
} catch (IOException e) {
System.out.println("写pojo文件出错:" + tbName);
e.printStackTrace();
}
}
}
相关推荐
### Java如何获得数据库表中各字段的字段名 在Java编程中,经常需要与数据库进行交互,例如查询、更新或删除等操作。其中一项常见需求是获取数据库表中的所有字段名称。这通常在动态生成报表或者需要根据数据库结构...
本篇将围绕Java结合`RestltData`获取数据库、数据库表、表字段以及执行SQL等数据源操作的相关知识点进行深入探讨。 首先,`RestltData`这个名字可能是"Result Data"的缩写,它可能是一个用来封装查询结果的对象,...
在Java编程中,获取数据库中表的字段信息是一项常见的任务,尤其在开发数据操作相关的应用程序时。这通常涉及到反射、JDBC(Java Database Connectivity)以及SQL查询。下面将详细介绍如何通过Java来实现这一功能。 ...
在Java编程中,生成数据库表序列号通常涉及到数据库序列(Sequence)的概念,这是数据库系统用于自动为表生成唯一标识符的一种机制。Oracle、PostgreSQL等数据库支持序列,而MySQL等数据库可能通过自增主键来实现...
Java DAO(Data Access Object)模式是Java编程中用于数据库操作的一种设计模式,它提供了一种在业务逻辑和数据库之间解耦的方式。DAO类是专门用来与数据库进行交互的,负责执行SQL语句,处理结果集,以及进行事务...
Java 数据库连接 ResultSet Java 数据库连接中的 ResultSet 是一个非常重要的概念,它包含符合 SQL 语句中条件的所有行,并且提供了对这些行中数据的访问。ResultSet 通过一套 get 方法访问当前行中的不同列,例如 ...
在Java编程环境中,读取数据库表并将其转换为SQL文件是一项常见的任务,特别是在数据迁移、备份或测试场景中。下面将详细介绍如何实现这个过程,并基于给出的标题和描述进行讲解。 1. **配置文件读取**: 首先,...
Java生成数据库字典表MySQL Doc-Generator是一款实用的工具,旨在帮助开发者将MySQL数据库中的表结构信息导出为Word文档,方便进行数据库设计文档的整理和分享。这个工具简化了手动编写数据库字典表的过程,提高了...
### Java判断数据库表是否存在 在Java开发中,经常会遇到需要检查特定表是否存在于数据库中的情况。这通常是数据库操作流程中的一个重要环节,确保后续的操作(如插入、更新或删除数据)能够顺利进行。本文将详细...
在Java编程领域,连接MySQL数据库是一项基础且重要的任务,它涉及到Java数据库连接(JDBC)技术的使用。本文将深入探讨如何在Eclipse编辑器环境下,利用JDBC API实现一个简单的登录注册框架,以与MySQL数据库进行...
本篇文章将深入探讨如何使用Java和Apache POI从数据库表中读取数据并将其转化为Word表格。 首先,你需要在项目中引入Apache POI库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....
本文将详细介绍如何使用Eclipse和JDBC API来获取MySQL数据库中的表结构以及主外键信息。 #### 一、准备工作 在开始之前,请确保你的开发环境已经安装了Eclipse IDE,并且项目中已经配置好了MySQL的JDBC驱动。此外...
首先,DAO实体类是Java编程中表示数据库表结构的对象,它通常包含对应于数据库表字段的属性,并且提供一些基本的CRUD(创建、读取、更新、删除)操作方法。例如,如果你有一个名为`User`的数据库表,那么对应的DAO...
Java ResultSet是Java数据库连接(JDBC)中最重要的组件之一,用于存储和处理数据库查询结果。在Java中,ResultSet对象是通过Statement对象的executeQuery()方法或prepareStatement()方法执行SQL语句后生成的。...
在Java开发中,自动化生成数据库字典可以极大地提高工作效率,减少手动编写文档的工作量,确保信息的准确性和一致性。本篇文章将深入探讨如何使用Java来实现这一功能,并结合MySQL数据库和Markdown格式进行讲解。 ...
总的来说,通过结合JDBC和Apache POI,我们可以实现从Oracle数据库中提取表结构信息,并将其导出为Excel文件,以满足数据管理和共享的需求。这个过程中,需要注意处理可能的异常,优化性能,以及保持代码的可读性...
标题中的“表字段描述依赖包”指的是在数据库操作中,特别是使用ORM(对象关系映射)框架时,需要处理数据库表的字段描述信息。ORMlite是这样的一个框架,它允许开发者用面向对象的方式操作数据库,将数据库表与Java...
在Java编程中,ResultSet是处理数据库查询结果的主要接口,它由Statement或PreparedStatement对象执行SQL查询后返回。而JavaBean是一种符合特定规范的Java类,通常用于封装数据,便于数据的传输和操作。当我们从...
实验8 数据库编程是Java高级程序设计中的一项重要内容,它涉及到Java如何与数据库进行交互,以便执行CRUD(创建、读取、更新、删除)操作。在这个实验中,学生需要编写一个Java程序来操作名为Staff的数据库表。以下...
在Java中,通常会为每个数据库表创建一个DAO类,用于执行CRUD(Create、Read、Update、Delete)操作。 JDBC(Java Database Connectivity)是Java语言连接数据库的标准API,它提供了与多种数据库进行交互的能力。在...