當前位置:首頁 » 數據倉庫 » java資料庫類生成
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

java資料庫類生成

發布時間: 2022-08-28 15:05:27

『壹』 用JAVA生成資料庫sql腳本

java可以調用cmd命令,利用sql server2000 的命令就可以生成SQL腳本了

『貳』 資料庫怎麼映射生成java實體類

java實體中默認是不會生成多對多關系那張表的,因為兩個實體之中兩邊都是集合類型,對應的面向對象中就是多對多了,當然也可以通過配置生成中間表

『叄』 有沒有人知道怎麼用Java代碼從資料庫表生成JPA實體類

IDEA ULTIMATE 版支持此功能。
配置IDEA中此項目的Database。添加hibernate支持。

使用Generate Persistence Mapping---->By Database Schema選項。
選擇資料庫表文件以及生成路徑,名稱等後自動生成文件。支持註解方式和XML配置方式。

『肆』 JAVA自動創建實體類工具

AutoJava 是一款免費的,針對於Oracle和SQLserver資料庫的、以面向對象模式的Java代碼生成工具。AutoJava根據O/R Mapping規則生成表對應的Java對象,並且生成了所有的添加、刪除、修改、查詢等底層資料庫操作代碼。藉助於AutoJava我們基本上不用再寫與資料庫相關的操作代碼,只需要在此基礎上實現相關的業務邏輯,將我們從重復的無太大技術含量的工作中解放出來。
AutoJava 是我在工作中為了省時間而寫出來的一個小工具,希望AutoJava能給廣大的Java人員在編碼過程中節省時間。這是地址 http://www.skycn.com/soft/27950.html

『伍』 Java中如何動態生成一個類和這個類的對象並且存入資料庫

簡單啊,建立一個包。
cn.temp.object;存放臨時類。
使用File類來寫文件,保存為 [ 類.java ]
再動態編譯。
OK

『陸』 java 里 實體類可不可以反向生成資料庫

這樣的功能既然可以想到,前人也會做好相應的方法來供應用,可以添加Hibernate支持,然後就設置添加實體類或實體類反轉成資料庫的實體表。

『柒』 如何通過java反射將資料庫表生成實體類

首先有幾點聲明:
1、代碼是在別人的基礎進行改寫的;
2、大家有什麼改進的意見可以告訴我,也可以自己改好共享給其他人;
3、剛剛畢業,水平有限,肯定有許多不足之處;
4、希望剛剛學習java的同學能有所啟發。

//這個是做轉換的類,裡面的DB只是封裝了資料庫的連接,大家可以用自己的,隨意
package com.tt.util.gen.entity.tool;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import com.tt.util.DB;

public class GenEntityMysql {

private String packageOutPath;// 指定實體生成所在包的路徑
private String authorName;// 作者名字
private String tablename;// 表名
private String databasename;// 資料庫名
private List<String> tablenames;// 拿到對應資料庫中所有的實體類(實體類需要與其他表明做區分)
private List<String> colnames; // 列名集合
private List<String> colTypes; // 列名類型集合
private boolean f_util = false; // 是否需要導入包java.util.*
private boolean f_sql = false; // 是否需要導入包java.sql.*

/*
* 構造函數
*/
public GenEntityMysql() {

// 使用properties讀取配置文件
Properties prop = new Properties();
try {
InputStream genentity = getClass().getResourceAsStream(
"/genentity.properties");
prop.load(genentity);

if (genentity != null) {
genentity.close();
}
} catch (Exception e) {
System.out.println("file " + "catalogPath.properties"
+ " not found!\n" + e);
}
this.databasename = prop.getProperty("databasename").toString();
this.tablename = prop.getProperty("tablename").toString();
this.packageOutPath = prop.getProperty("packageOutPath").toString();
this.authorName = prop.getProperty("authorName").toString();
}

// 創建多個實體類
private void genEntity(List<String> tablenames, Connection conn) {
// 使用第歸生成文件
for (String tablename : tablenames) {
this.genEntity(tablename, conn);
}
}

// 創建單個實體類
private void genEntity(String tablename, Connection conn) {
String sql = "select * from " + tablename;
PreparedStatement pstmt = null;
ResultSetMetaData rsmd = null;
try {
pstmt = DB.getPStmt(conn, sql);
rsmd = pstmt.getMetaData();
int size = rsmd.getColumnCount(); // 統計列
colnames = new ArrayList<String>();
colTypes = new ArrayList<String>();

for (int i = 0; i < size; i++) {
colnames.add(rsmd.getColumnName(i + 1));
colTypes.add(rsmd.getColumnTypeName(i + 1));

if (colTypes.get(i).equalsIgnoreCase("datetime")) {
f_util = true;
}
if (colTypes.get(i).equalsIgnoreCase("image")
|| colTypes.get(i).equalsIgnoreCase("text")) {
f_sql = true;
}
}
System.out.println(colnames);
System.out.println(colTypes);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
DB.close(pstmt);
}
// 在內存中生成代碼
String content = parse(tablename);

// 寫入到文件中
try {
File directory = new File("");
String outputPath = directory.getAbsolutePath() + "/src/"
+ this.packageOutPath.replace(".", "/") + "/";
System.out.println("寫出的路徑:" + outputPath);
// 檢測路徑是否存在,不存在就創建路徑
File path = new File(outputPath);
if (!path.exists() && !path.isDirectory()) {
path.mkdir();
System.out.println(path.exists());
}
// 創建文件
outputPath += initcap(tablename) + ".java";
File file = new File(outputPath);
if (!file.exists()) {
file.createNewFile();
}
// 寫出到硬碟
FileWriter fw = new FileWriter(file);
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}

private void getAllEntityTable(Connection conn, List<String> tablenames) {
ResultSet rs = null;
try {
DatabaseMetaData dmd = (DatabaseMetaData) conn.getMetaData();
/*
* TABLE_CAT String => 表類別(可為 null)
* TABLE_SCHEM String => 表模式(可為null)
* TABLE_NAME String => 表名稱
* TABLE_TYPE String => 表類型
*/
rs = dmd.getTables(null, null, "%", null);
while (rs.next()) {
tablenames.add(rs.getString("TABLE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
*
* @param tablename
* @return
*/
private String parse(String tablename) {
StringBuffer sb = new StringBuffer();

// 判斷是否導入工具包
if (f_util) {
sb.append("import java.util.Date;\r\n");
}
if (f_sql) {
sb.append("import java.sql.*;\r\n");
}
sb.append("package " + this.packageOutPath + ";\r\n");
sb.append("\r\n");
// 注釋部分
sb.append(" /**\r\n");
sb.append(" * " + tablename + " 實體類\r\n");
sb.append(" * " + new Date() + " " + this.authorName + "\r\n");
sb.append(" */ \r\n");
// 實體部分
sb.append("\r\n\r\npublic class " + initcap(tablename) + "{\r\n");
processAllAttrs(sb);// 屬性
processAllMethod(sb);// get set方法
sb.append("}\r\n");

return sb.toString();
}

/**
* 功能:生成所有屬性
*
* @param sb
*/
private void processAllAttrs(StringBuffer sb) {

for (int i = 0; i < colnames.size(); i++) {
sb.append("\tprivate " + sqlType2JavaType(colTypes.get(i)) + " "
+ colnames.get(i) + ";\r\n");
}

}

/**
* 功能:生成所有方法
*
* @param sb
*/
private void processAllMethod(StringBuffer sb) {

for (int i = 0; i < colnames.size(); i++) {
sb.append("\tpublic void set" + initcap(colnames.get(i)) + "("
+ sqlType2JavaType(colTypes.get(i)) + " " + colnames.get(i)
+ "){\r\n");
sb.append("\t\tthis." + colnames.get(i) + "=" + colnames.get(i)
+ ";\r\n");
sb.append("\t}\r\n");
sb.append("\tpublic " + sqlType2JavaType(colTypes.get(i)) + " get"
+ initcap(colnames.get(i)) + "(){\r\n");
sb.append("\t\treturn " + colnames.get(i) + ";\r\n");
sb.append("\t}\r\n");
}

}

/**
* 功能:將輸入字元串的首字母改成大寫
*
* @param str
* @return
*/
private String initcap(String str) {
char[] ch = str.toCharArray();
if (ch[0] >= 'a' && ch[0] <= 'z') {
ch[0] = (char) (ch[0] - 32);
}

return new String(ch);
}

/**
* 功能:獲得列的數據類型
*
* @param sqlType
* @return
*/
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("int")) {
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")) {
return "Date";
} else if (sqlType.equalsIgnoreCase("image")) {
return "Blod";
}

return null;
}

/**
* 出口 TODO
*
* @param args
*/
public static void main(String[] args) {

new GenEntityMysql().start();

}

private void start() {
// 創建連接
Connection conn = DB.getConn();

if (databasename != null && !databasename.equals("")
&& tablename != null && !tablename.equals("")) {
System.out.println("databasename 和 tablename 不能同時存在");
} else {
// 如果配置文件中有資料庫名字,則可以拿到其中所有的實體類
if (databasename != null && !databasename.equals("")) {
// 獲取所有實體表名字
tablenames = new ArrayList<String>();
getAllEntityTable(conn, tablenames);
System.out.println(tablenames);
// 為每個實體表生成實體類
genEntity(tablenames, conn);
} else {
// 為指定實體表生成實體類
genEntity(tablename, conn);
}

// 關閉資料庫連接
if (conn != null) {
DB.close(conn);
}
}

}

}

『捌』 java 將普通文件生成資料庫文件

幫你臨時寫了一個大概的.只能說保證簡單運行,既然是你自己的畢業設計,緩存,文件名獲取這些方面就你自己去完善了.下面是實現代碼.注釋沒時間就沒寫了.都是很簡單的代碼,應該能看得明白.
注意點1:資料庫中關於文件內容的數據類型最好是我寫的那樣.以前有什麼blob或者image類型的,其實就算用varchar(max)也一樣可以實現.但是微軟SQL Server的手冊上已經明確推薦varbinary](max)類型.具體看你自己選擇.
注意點2:因為在從資料庫讀取的實現上,只是將文件保存至磁碟,所以只return null,如果有需要,可以自己返回file
--------------------------------資料庫----------------------------

CREATE TABLE [dbo].[savedFile](
[fileID] [int] IDENTITY(1,1) NOT NULL,
[fileName] [nvarchar](200) NOT NULL,
[fileContent] [varbinary](max) NOT NULL,
[fileLength] [bigint] NOT NULL,
CONSTRAINT [PK_savedFile] PRIMARY KEY CLUSTERED
(
[fileID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

-----------------------------------簡單實現的java類------------------------------------------
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
//int saveResult = saveFileToDB();
//System.out.println("成功保存" + saveResult + "個文件至資料庫中");

openFileFromDB();
}

public static File openFileFromDB() {
String path = "E:\\1.JPG";
File file = new File(path);

String sqlString = "select * from savedfile";
ResultSet rSet = null;
PreparedStatement pstmt = null;
Connection connection = null;
try {
if (connection == null || connection.isClosed()) {
connection = createConnection();
connection.setAutoCommit(false);
}
pstmt = connection.prepareStatement(sqlString);

rSet = pstmt.executeQuery();
connection.commit();
while (rSet.next()) {
OutputStream os = new FileOutputStream(file);
int length = rSet.getInt("fileLength");
byte[] content = rSet.getBytes("fileContent");
os.write(content, 0, length);
}
} catch (SQLException e) {
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
closeAll(connection, pstmt, rSet);
}
return null;
}

public static int saveFileToDB() {
String sqlString = "INSERT INTO savedFile VALUES(?,?,?)";
PreparedStatement pstmt = null;
Connection connection = null;
int noOfRows = 0;
String path = "D:\\DSC00727.JPG";
File file = new File(path);
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
System.err.println("文件 " + file.getPath() + " 不存在。");
return -1;
}
try {
if (connection == null || connection.isClosed()) {
connection = createConnection();
}
connection.setAutoCommit(false);
pstmt = connection.prepareStatement(sqlString);
pstmt.setString(1, file.getName());
pstmt.setBinaryStream(2, fis);
pstmt.setLong(3, file.length());

noOfRows = pstmt.executeUpdate();
connection.commit();
} catch (SQLException e) {
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
closeAll(connection, pstmt, null);
}

return noOfRows;
}

private static Connection createConnection() {
Connection connection = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=EcrParts", "sa", "ok");
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

public static void closeAll(Connection connection, PreparedStatement pstmt,
ResultSet rSet) {
if (rSet != null) {
try {
rSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

『玖』 java怎麼把資料庫數據生成文件

在dos窗口:
生成文件:
mysqlmp –u用戶名 –p密碼 資料庫名>生成的腳本文件路徑
例如:mysqlmp –uroot –p123 mydb>C:\ mydb.sql
就可以在C盤下找到mydb.sql文件了

恢復資料庫:
還可以通過下面的方式來執行腳本文件:
mysql –u用戶名–p密碼 資料庫<要執行腳本文件路徑
例如:mysql -uroot-p123 mydb<c:\mydb.sql
也可以用這種形式:
SOURCEC:\mydb.sql