【Hibernate】Hibernate中查询表名、字段名以及字段类型等信息
生活随笔
收集整理的這篇文章主要介紹了
【Hibernate】Hibernate中查询表名、字段名以及字段类型等信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hibernate中查詢表名、字段名以及字段類型等信息的工具類
package com.lmb.ui.util;import org.hibernate.cfg.Configuration; import org.hibernate.mapping.Column; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Property;import java.util.Iterator;/*** 功能描述:根據實體類得到對應的表名、主鍵名、字段名工具類*/ public class HibernateConfigurationHelper {private static Configuration hibernateConf;private static Configuration getHibernateConf() {if (hibernateConf == null) {return new Configuration();}return hibernateConf;}private static PersistentClass getPersistentClass(Class clazz) {synchronized (HibernateConfigurationHelper.class) {PersistentClass pc = getHibernateConf().getClassMapping(clazz.getName());if (pc == null) {hibernateConf = getHibernateConf().addClass(clazz);pc = getHibernateConf().getClassMapping(clazz.getName());}return pc;}}/*** 功能描述:獲取實體對應的表名** @param clazz 實體類* @return 表名*/public static String getTableName(Class clazz) {return getPersistentClass(clazz).getTable().getName();}/*** 功能描述:獲取實體對應表的主鍵字段名稱** @param clazz 實體類* @return 主鍵字段名稱*/public static String getPkColumnName(Class clazz) {return getPersistentClass(clazz).getTable().getPrimaryKey().getColumn(0).getName();}/*** 功能描述:通過實體類和屬性,獲取實體類屬性對應的表字段名稱** @param clazz 實體類* @param propertyName 屬性名稱* @return 字段名稱*/public static String getColumnName(Class clazz, String propertyName) {PersistentClass persistentClass = getPersistentClass(clazz);Property property = persistentClass.getProperty(propertyName);Iterator it = property.getColumnIterator();if (it.hasNext()) {Column column = (Column) it.next();return column.getName();}return null;}/*** 功能描述:通過實體類和屬性,獲取實體類屬性對應的表字段類型** @param clazz 實體類* @param propertyName 屬性名稱* @return 字段名稱*/public static String getColumnType(Class clazz, String propertyName) {PersistentClass persistentClass = getPersistentClass(clazz);Property property = persistentClass.getProperty(propertyName);String type = property.getType().getName();if (type.equals("timestamp")) {return "java.sql." + type.substring(0, 1).toUpperCase() + type.substring(1);} else {return "java.lang." + type.substring(0, 1).toUpperCase() + type.substring(1);}}/*** 獲得實體類的主鍵屬性名稱,如果沒有返回null** @param clazz 實體類的class對象* @return 實體類主鍵屬性名稱*/public static String getPrimaryKeyName(Class clazz) {PersistentClass persistentClass = getPersistentClass(clazz);Property property = persistentClass.getIdentifierProperty();if (property != null) {return property.getName();}return null;} }總結
以上是生活随笔為你收集整理的【Hibernate】Hibernate中查询表名、字段名以及字段类型等信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【定时任务】JDK java.util.
- 下一篇: InetAddress.getLocal