配置好这个,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,算是总结下这段时间的心得吧,有说的不对的地方,请见谅!