Hybris IMPEX.

1、简介

Impex是基于java Model的一种面向对象的数据操作手段,因此写impex代码前需要理清java Model之间的依赖关系。

2、基本语法

mode type[modifier=value];attribute[modifier=value];attribute[modifier=value];attribute[modifier=value][;...];attribute[modifier=value]

mode:提供四种操作insert、update、insert_update、remove等操作

    • Insert:在Hybris中创建一个item,Impex默认不检查是否存在相同属性的item
    • Update:在hybris中通过一个unique的属性,选择一个存在的item,将属性值设置到对应的值上
    • Insert_update:将insert和Update方式合并。
    • Remove:hybris会尝试寻找正确的item,如果一个item存在,它将被删除 

- type:定义处理的item类型,category,product,media等等

- attribute:映射到对象的column属性

- modifier 控制说明使用,来说明这个column的限制

    • alias 别名
    • allownull
    • cellDecorator
    • collection-delimiter
    • dateformat 时间格式化
    • default 默认值
    • forceWrite
    • ignoreKeyCase
    • ignorenull
    • key2value-delimiter 键值对
    • lang 定义语言,多语言。lang=en
    • map-delimiter
    • mode
    • numberformat
    • path-delimiter
    • pos
    • translator
    • unique 控制属性唯一。unque=true
    • virtual

3、Demo

insert User;uid[unique=true] Customer;sampleCustomer Employee;SampleEmployee
Customer 和 Employee是 User 的子类,以上表示增加两个对象
等价于
insert Customer;uid[unique=true] ;sampleCustomer
insert Employee;uid[unique=true] ;sampleEmployee
中间用空格隔开表示后面的依次为前面的赋值,不用空格隔开表示是对象的属性
 
--------------------------------------分割线---------------------------------------------
insert product;code;unit(code);catalogVersion(catalog(id),version)
;testCode;pieces;clothescatalog:staged
catalogVersion(catalog(id),version)
id=clothescatalog,version=staged;
查询方式:先根据id=clothescatalog查出cataloglog对象,然后根据对象的pk和version等于staged查出catalogVersion对象的pk和version等于Staged查询出catalogVersion对象的PK
 
--------------------------------------分割线---------------------------------------------
insert language;code;;active ;de;deutsch;true
;;表示跳过这一列,deutsch不会被增加
 
--------------------------------------分割线---------------------------------------------
INSERT Product;code[unique=true];name[lang=en];name[lang=de]
;myProduct1;myProduct1's localized name;lokalisierter Name von myProduct1 
lang 来指定本地化,就是什么语言。
 
--------------------------------------分割线---------------------------------------------
UPDATE Product;code[unique=true];name[lang=en]
;myProduct1;my product 1
这样修改是不会影响到其他语言的,只会影响到lang=en的

4、一对多关系插入

INSERT_UPDATE USER;uid[unique=true];userDescription
;1;1;
INSERT_UPDATE OUTLET;code[unique=true];name;outletDescription;product(uid[unique=true])
;12;12;12;1;
;2;2;2;1;
;3;3;3;1;
一对多的话,主要在多表中有一个字段来表示和一表关联,所以只要有一个一表的唯一键来确认对应到那条记录就可以了 product(uid[unique=true])

5、批量处理

REMOVE product[batchmode=true];name[unique=true,lang=zh]
;test
所有name等于test的产品全部删除 
posted @ 2017-08-06 21:59  JMCui  阅读(1257)  评论(0编辑  收藏  举报