導航:首頁 > 編程語言 > java資料庫實體類

java資料庫實體類

發布時間:2022-10-25 20:27:47

java中,實體類是什麼意思

在javaweb中,實體類裡面的某一個類,相當於是資料庫里的一張表,一個類裡面的某個欄位相當於表的列名。
在實體里有getter和setter方法,getter是只讀,setter是寫入。
希望能對樓主有幫助,謝謝採納

⑵ 什麼是java實體類

在Java中,實體類就是一個擁有Set和Get方法的類。實體類通常總是和資料庫之類的(所謂持久層數據)聯系在一起。這種聯系是藉由框架(如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中,類、對象、實體、實體類、實體對象之間存在怎樣的聯系請高手做形象的解釋。

類: java中的類 一般來存放實現了某些功能的代碼 代碼片段,是程序的基礎元素
對象:對象是一個很抽象的概念,比如 一個java類 實例化以後可以稱為一個對象 對象一般指的就是一個類創建出來的實例 比如
public class A{}
那麼 A是一個類
A a =new A();
那麼 這里的a 指的就是A這個類的實例 也就是對象 通過對象a 可以訪問A類下面的 非私有欄位 和方法
實體類:一般會與實體對象一起出現 對應資料庫 或者其他數據源中的 一張表 俗稱為一個對象
這里的實體類對象和實體類 打個簡單的比方
實體類 就好像事一張白紙 白紙的獲得 要從廠商那邊取得 也就是我們去買 在程序里 就是用的關鍵字new 當new了以後 就好像是我們從生產廠商那裡買來了一張白紙 當然 白紙上什麼都沒有
有了這張白紙以後 我們就可以在白紙上給它賦值 讓它獨一無二 也就是對實體類進行封裝數據
每一張白紙 從我們購買的時候 都是一樣的對象 都是一個字都沒有的白紙 但是 後來通過業務處理 使得白紙上都有了自己的東西 也就是對象實體中的數據封裝
還可以把實體類比作一個模板 創建出來的實例對象 都是跟這個模板一樣的 至於 模板裡面填寫的內容 那就要看你的賦值了 就拿最簡單的簡歷來說 一般都會有簡歷模板 我們從網上下載一個簡歷模板 就是創建了一個實體類的對象 而這個簡歷模板 就相當於一個實體類 接下來 我們對下載下來的模板進行操作 也就是對 實體類對象進行操作 對實體類對象操作 是不會影響實體類的 這個例子裡面 應該一目瞭然 然後 根據個人信息不同 我們再模板上填寫的信息也不同 比如 姓名 年齡 等等 按照個人的信息來填寫 所以 就會產生實體類的對象的屬性 不同 相信這樣解釋 你應該可以理解了吧 關鍵還是要靠多寫訓練 熟能生巧 運用以後才能知道這些東西存在的奧妙

⑸ 什麼是java實體類

其實就是只有一些屬性在裡面的類,只不過對應資料庫的屬性,只是我們叫他實體類。

⑹ Java實體類屬性是另一個類的時候如何存資料庫

添加註解存資料庫。
當創建的類和資料庫裡面的每一項一一映射時,但是又需要多些一些屬性是不存在資料庫裡面的,此時可以在此屬性上加一個註解@TableField(exist = false)就可以,另外這里添加一些經常用到的註解@Id 表示這個欄位是主鍵@Column(name = 「xx」) 表示把欄位和資料庫的名字對應,理解成起別名@Transactional 可以作用在介面、類、類方法。

⑺ JAVA如何設計實體類

如果說的是對應資料庫信息的實體類,……對Java來說,和普通的類一模一樣。只是每個類設計者有不同的用法,比如說集合類,作為各種數據結構使用。實體類主要作為存儲資料庫信息使用。兩者Java上有區別么?沒有,只是代碼不一樣,用法不一樣。

⑻ JAVA問題:實體類的作用

首先這樣寫是為了可以更方便的控制屬性的讀寫(有隻讀 只寫 和 讀寫)並且可以控制寫的值是否合法(在set的時候進行判斷賦值)以達到對數據操作的有效及安全,其次是為了讓你的程序更方便的調用及操作(你可以將類實例後存在集合內)。

閱讀全文

與java資料庫實體類相關的資料

熱點內容
皓強工具解壓步驟 瀏覽:690
部隊抗洪搶險命令範文 瀏覽:886
歐姆龍plc編程軟體使用教程 瀏覽:592
ai文件pdf 瀏覽:911
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:654
王者程序員都有誰 瀏覽:76
給牛換腳掌解壓 瀏覽:387
圍棋有多少種演算法 瀏覽:602
unity資源包在哪個文件夾 瀏覽:704
阿里雲伺服器遠程鏈接不成功 瀏覽:482
文件系統pdf 瀏覽:767
原神安卓區服什麼意思 瀏覽:38
貝殼app怎麼線上發布 瀏覽:161
如何挑選安卓系統機頂盒 瀏覽:55
安卓快充使用有什麼注意事項 瀏覽:911