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的产品全部删除