我们不生产代码,但我们是bug的专业制造者

FlexibleSearch初体验

1.FlexibleSearch庐山真面目

FlexibleSearch是hybris框架中基于SQL语法的内置查询语言,与SQL不同的是FlexibleSearch根据类型来查,查找的是对象。

  • 特点:不需要显式制定数据库名,框架会自动解析类型和数据表依赖关系,类型系统和数据库转换过程会自动进行。注意:嵌套查询的用法
    一个FlexibleSearch语句的执行分为两个阶段:
  • pre-parsing(预解析)阶段:预解析成一个SQL-compliant语句
    在预解析阶段,FlexibleSearch框架解析FlexibleSearch语法到SQL-compliant里。
  • 执行数据库查询阶段,返回查找的数据结果。
    下面的两个代码段表现出一个FlexibleSearch查询和这个FlexibleSearch语句查询的结果,这是在数据库上执行的语句:

FlexibleSearch查询语句:

1
select {pk}, {code}, {name[de]} from {Product}

在数据库上执行的SQL语句:

1
2
3
4
5
SELECT item_t0.PK , item_t0.Code , lp_t0.p_name
FROM products item_t0 JOIN productslp lp_t0 ON item_t0.PK = lp_t0.ITEMPK AND lp_t0.LANGPK= 9013632135395968
WHERE (item_t0.TypePkString IN ( 23087380955301264 , 23087380955663520 , 23087380955662768 , 23087380955661760 ,
23087385363574432 , 23087380955568768 , 23087380955206016 ) )

2.FlexibleSearch查询步骤

1.根据model查询对应的表

模型对应的数据表名为选中xxxModel然后按ctrl+鼠标左键点击既可以进到xxxModel继承的类中查看typeCode,然后按ctrl+H搜索在对应用sql查询的表名,输入code=”type中的内容”,在.xml中点进去deploment字段对应的表即为数据表名。

2.编写sql对数据库查询

编写的查询语句要能不报错而且能查出目标数据

3.将sql转换为Flexible查询语句

一般将sql查询的字段换为相应的对象表示,用{}包起来

4.测试Flexible查询语言

在浏览器中输入http://localhost:9002/hac
登录后再Console中的FlexibelSearch中就可以查询。

Hybris之初体验

  1. 1. 1.FlexibleSearch庐山真面目
  2. 2. 2.FlexibleSearch查询步骤
    1. 2.1. 1.根据model查询对应的表
    2. 2.2. 2.编写sql对数据库查询
    3. 2.3. 3.将sql转换为Flexible查询语句
    4. 2.4. 4.测试Flexible查询语言