hibernate 属性名映射分隔符

 首先写个ImprovedNamingStrategy的继承类,复写里面的方法

public class SelfNamingStrategy extends ImprovedNamingStrategy {

	public static final String ENTITY_COMMON_PREFIX_PACKAGE_LAYER_NAME = "entity";

	public String classToTableName(String className) {
		return getLayerNameAbbr(getPackageLastLayer(className))
				+ addUnderscores2(className);
	}

	public String propertyToColumnName(String propertyName) {
		return addUnderscores2(propertyName);
	}

	public String tableName(String tableName) {
		return addUnderscores2(tableName);
	}

	public String columnName(String columnName) {
		return addUnderscores2(columnName);
	}

	protected static String addUnderscores2(String name) {
		if (name.endsWith("VOs")) {
			name = name.substring(0, name.length() - 3) + "_v_o_s";
		}
		StringBuffer buf = new StringBuffer(name.replace('.', '_').replace(
				"VO", "_v_o"));
//		StringBuffer  buf = new StringBuffer();
		for (int i = 1; i < buf.length() - 1; ++i) {
			if ((!(Character.isLowerCase(buf.charAt(i - 1))))
					|| (!(Character.isUpperCase(buf.charAt(i))))
					|| (!(Character.isLowerCase(buf.charAt(i + 1))))) {
				continue;
			}

			buf.insert(i++, '_');
		}

		return buf.toString().toLowerCase();
	}

	public static String getPackageLastLayer(String qualifiedName) {
		if (!(qualifiedName.contains("entity.")))
			return "";
		int loc = qualifiedName.lastIndexOf(".");
		if (loc < 0) {
			return "";
		}
		String temp = qualifiedName.substring(0, loc);
		int loc1 = temp.lastIndexOf(".");
		if (loc1 < 0) {
			return temp;
		}
		return temp.substring(loc1 + 1);
	}

	public static String getLayerNameAbbr(String layerName) {
		if ((StringUtils.isEmpty(layerName))
				|| (layerName.equalsIgnoreCase("entity"))) {
			return "";
		}
		StringBuilder sb = new StringBuilder(layerName);
		if (layerName.length() < 3) {
			return "_".toUpperCase();
		}
		return sb.charAt(0) + sb.charAt(1) + sb.charAt(sb.length() - 1)
				+ "_".toUpperCase();
	}
}


 

然后作为sessionFactory的namingFactory

配置如下:

 

<bean id="selfNamingStrategy" class="system.core.dao.orm.SelfNamingStrategy"></bean>

	<!-- Hibernate配置 -->
		<bean id="sessionFactory"
		class="system.core.dao.orm.ExtensionAnnotationSessionFactoryBean"
		p:namingStrategy-ref="selfNamingStrategy">
......


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值