日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 映射类_将数据库类型映射到具体的Java类

發布時間:2024/10/8 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 映射类_将数据库类型映射到具体的Java类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

答案比使用getMetaData方法更復雜,因為getMetaData方法返回的整數類型和完整的類名沒有直接映射.此解決方案需要兩段代碼:

>實現一個方法來獲取java.sql.Types常量整數值.

>創建將該值轉換為類名的方法.

Java類型方法

以下方法檢索元信息:

public String getJavaType( String schema, String object, String column )

throws Exception {

String fullName = schema + '.' + object + '.' + column;

DatabaseMetaData metaData = getConnection().getMetaData();

ResultSet columnMeta = metaData.getColumns( null, schema, object, column );

String javaType = null;

if( columnMeta.first() ) {

int dataType = columnMeta.getInt( "DATA_TYPE" );

javaType = SQLTypeMap.convert( dataType );

}

else {

throw new Exception( "Unknown database column " + fullName + '.' );

}

return javaType;

}

靜態轉換方法

必須將常量整數值轉換為類名.這可以通過以下方式完成:

import java.sql.Types;

/**

* Converts database types to Java class types.

*/

public class SQLTypeMap {

/**

* Translates a data type from an integer (java.sql.Types value) to a string

* that represents the corresponding class.

*

* @param type

* The java.sql.Types value to convert to its corresponding class.

* @return The class that corresponds to the given java.sql.Types

* value, or Object.class if the type has no known mapping.

*/

public static Class> toClass(int type) {

Class> result = Object.class;

switch (type) {

case Types.CHAR:

case Types.VARCHAR:

case Types.LONGVARCHAR:

result = String.class;

break;

case Types.NUMERIC:

case Types.DECIMAL:

result = java.math.BigDecimal.class;

break;

case Types.BIT:

result = Boolean.class;

break;

case Types.TINYINT:

result = Byte.class;

break;

case Types.SMALLINT:

result = Short.class;

break;

case Types.INTEGER:

result = Integer.class;

break;

case Types.BIGINT:

result = Long.class;

break;

case Types.REAL:

case Types.FLOAT:

result = Float.class;

break;

case Types.DOUBLE:

result = Double.class;

break;

case Types.BINARY:

case Types.VARBINARY:

case Types.LONGVARBINARY:

result = Byte[].class;

break;

case Types.DATE:

result = java.sql.Date.class;

break;

case Types.TIME:

result = java.sql.Time.class;

break;

case Types.TIMESTAMP:

result = java.sql.Timestamp.class;

break;

}

return result;

}

}

請注意,不同的數據庫可以在映射上具有不同的變體.

總結

以上是生活随笔為你收集整理的java 映射类_将数据库类型映射到具体的Java类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。