hybris 相关的一些狗子 Model对象 xml的配置

配置好这个,hybris可以在hmc中update帮你生产数据库表跟model对象(虽然没有mybatis的那种逆向工程快,但也蛮方便的)

在你项目core下面的resources下面的项目名-items.xml  

		<typegroup name="Yongdalog">
			<itemtype code="RequestLog" autocreate="true" generate="true" extends="GenericItem">
				<description>日志模型对象</description>
				<deployment table="RequestLog" typecode="20111"/>
				<attributes>
					<attribute qualifier="code" type="java.lang.String">
						<description>唯一id</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property"/>
					</attribute>
					<attribute qualifier="customerId" type="java.lang.String">
						<description>用户id</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property"/>
					</attribute>
					<attribute qualifier="employeeId" type="java.lang.String">
						<description>员工id</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property"/>
					</attribute>
					<attribute qualifier="exceptionInfo" type="java.lang.String">
						<description>错误信息 最大512个字符,超过截取</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property"/>
					</attribute>
					<attribute qualifier="externalCallingDesc" type="java.lang.String">
						<description>外部调用说明e</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property"/>
					</attribute>
					<attribute qualifier="externalCallingUrl" type="java.lang.String">
						<description>外部调用url地址</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="externalRequestBody" type="java.lang.String">
						<description>外部调用的请求包 1024长</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" >
                           <columntype database="mysql">
                              <value>TEXT</value>
                           </columntype>
                        </persistence>			
					</attribute>
					<attribute qualifier="externalResponseBody" type="java.lang.String">
						<description>外部调用的返回包</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property">
						   <columntype database="mysql">
                              <value>TEXT</value>
                           </columntype>
						</persistence>
					</attribute>
					<attribute qualifier="internalBeanMethod" type="java.lang.String">
						<description>内部bean的调用方法名,便于反射调用</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<!-- <attribute qualifier="internalBeanMethodParams" type="java.lang.String">
						<description>内部bean的调用方法的参数信息, 便于反射调用时作为参数; 此信息不保存,只是为了方便服务层编写. DAO层 将internalBeanMethodParamsString转换到</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute> -->
					<attribute qualifier="internalBeanMethodReturn" type="java.lang.String">
						<description>内部bean的调用方法的返回信息 json保存</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="internalBeanName" type="java.lang.String">
						<description>内部调用的bean名,便于从spring容器中获取bean对象</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="orderId" type="java.lang.String">
						<description>订单id</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="requestTime" type="java.lang.Long">
						<description>调用时间</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="restartedBasedOnRequest" type="java.lang.String">
						<description>重发的父请求id,便于关联在一起</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="sourceModule" type="java.lang.String">
						<description>源模块名</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="status" type="java.lang.Integer">
						<description>状态 -1 失败 1 正常</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
					<attribute qualifier="targetModule" type="java.lang.String">
						<description>目标模块名</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property" />
					</attribute>
				</attributes>
			</itemtype>
			<itemtype code="RequestLogBeanMethodParam" autocreate="true" generate="true" extends="GenericItem">
				<description>日志bean方法的参数格式</description>
				<deployment table="RequestLogBean" typecode="20112"/>
				<attributes>
					<attribute qualifier="paramClassType" type="java.lang.String">
						<description>参数的全路径类名 便于反射创建</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property"/>
					</attribute>
					<attribute qualifier="paramGenericClassType" type="java.lang.String">
						<description>参数的泛型类名</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property"/>
					</attribute>
					<attribute qualifier="paramValue" type="java.lang.String">
						<description>参数值</description>
						<modifiers read="true" write="true" search="true" optional="true"/>
						<persistence type="property">
						   <columntype database="mysql">
                              <value>TEXT</value>
                           </columntype>
						</persistence>
					</attribute>										
				</attributes>
			</itemtype>
		</typegroup>

上面是2个model的配置

typegroup  分组,

itemtype   你要创建的model 

table是表名

items主要有4部分的配置,collectiontypes、enumtypes、relations、itemtypes这边主要介绍下后面2部分,itemtyes主要配置的就是model跟表(如上代码),relations主要配置的是表与表的关系,一对多,多对多这种(代码如下)

		<!-- 品牌与门店之间的关系(多对多) -->
		<relation code="YdStoreForVehicleBrand" generate="true" localized="false" autocreate="true">
			<deployment table="YdStore2VehicleBrandRel" typecode="30068"/>
			<sourceElement qualifier="stores" type="YdStore" cardinality="many" collectiontype="list" ordered="true">
				<modifiers read="true" write="true" search="true" optional="true"/>
			</sourceElement>
			<targetElement qualifier="vehicleBrands" type="VehicleBrand" cardinality="many" collectiontype="list" ordered="true">
				<modifiers read="true" write="true" search="true" optional="true"/>
			</targetElement>
		</relation>
		<!-- 日志一对多 -->
		<relation code="RequestLogForRequestLogBeanMethodParamRelation" autocreate="true"
			generate="true" localized="false">
			<description>日志一对多</description>
			<sourceElement qualifier="requestLog" type="RequestLog"
				cardinality="one">
				<modifiers read="true" write="true" optional="true" />
			</sourceElement>
			<targetElement qualifier="requestLogBeanMethodParam" type="RequestLogBeanMethodParam"
				cardinality="many" collectiontype="list" ordered="false">
				<modifiers read="true" write="true" optional="true" />
			</targetElement>
		</relation>
再多说几句,在hybris里面除了model还有种数据data,在facades层需要进行着2中数据的转换,所以你需要写一个Populator这个类(如下)
public class RequestLogPopulator implements Populator<RequestLogModel, RequestLogData>
{
   private SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	/*
	 * (non-Javadoc)
	 *
	 * @see de.hybris.platform.converters.Populator#populate(java.lang.Object, java.lang.Object)
	 */
	@Override
	public void populate(RequestLogModel requestLogModel, RequestLogData requestLogData) throws ConversionException

	{
		if (null != requestLogModel)
		{
			requestLogData.setCode(requestLogModel.getCode());
			requestLogData.setExceptionInfo(requestLogModel.getExceptionInfo());
			requestLogData.setOrderId(requestLogModel.getOrderId());
			requestLogData.setEmployeeId(requestLogModel.getEmployeeId());				
			requestLogData.setCustomerId(requestLogModel.getCustomerId());		
			requestLogData.setSourceModule(requestLogModel.getSourceModule());		
			requestLogData.setTargetModule(requestLogModel.getTargetModule());	
			requestLogData.setExternalCallingDesc(requestLogModel.getExternalCallingDesc());
			requestLogData.setExternalCallingUrl(requestLogModel.getExternalCallingUrl());
			requestLogData.setRestartedBasedOnRequest(requestLogModel.getRestartedBasedOnRequest());
			//requestLogData.setExternalRequestBody(requestLogModel.getExternalRequestBody());
			//requestLogData.setExternalResponseBody(requestLogModel.getExternalResponseBody());
			if (requestLogModel.getStatus() != null)
			{
				requestLogData.setStatus(requestLogModel.getStatus());
			}
			if (requestLogModel.getRequestTime() != null)
			{
				String dateTime=df.format(new Date(requestLogModel.getRequestTime().longValue()));
				requestLogData.setRequestTime(dateTime);
			}
		     
		}
	}

}
其他的倒是没什么说的,我也是刚入hybris,算是总结下这段时间的心得吧,有说的不对的地方,请见谅!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值