类 QuerySpec

java.lang.Object
com.midi.his.sdk.query.QuerySpec

public final class QuerySpec extends Object
查询条件载体,翻译为报文 MsgInfo 下的 query、order、distinct 节点。

用法(链式,默认条件之间用 AND 连接):


 QuerySpec spec = QuerySpec.create()
         .eq("INVALID_FLAG", "0")
         .like("DEPT_NAME", "耳科")
         .notNull("WARD_INDEX_NO")
         .or("DEPT_CODE", CompareOp.EQ, "10130102")
         .orderBy("UPDATE_DATETIME", SortOrder.DESC)
         .pageSize(200);
 

注入防护:字段名只允许字母、数字与下划线,比较符只能取自 CompareOp; 字符串值一律用单引号包裹并把内部单引号翻倍转义。需要原样下发的表达式(数值、日期函数)请显式使用 number(java.lang.String, com.midi.his.sdk.query.CompareOp, java.lang.String) 或 raw(java.lang.String, com.midi.his.sdk.query.CompareOp, java.lang.String, java.lang.String)。

本类按调用创建、可变,不是线程安全的;不要在多线程间共享同一个实例。

  • 方法详细资料

    • create

      public static QuerySpec create()
      返回:
      空条件集,等价于不加 where 过滤
    • of

      public static QuerySpec of(String item, String value)
      从已登记的字段名批量构造:仅等值条件。
      参数:
      item - 报文字段名
      value - 字符串值
      返回:
      新实例
    • eq

      public QuerySpec eq(String item, String value)
      item = 'value'。
    • ne

      public QuerySpec ne(String item, String value)
      item != 'value'。
    • gt

      public QuerySpec gt(String item, String value)
      item > 'value',字符串比较。
    • ge

      public QuerySpec ge(String item, String value)
      item >= 'value'。
    • lt

      public QuerySpec lt(String item, String value)
      item < 'value'。
    • le

      public QuerySpec le(String item, String value)
      item <= 'value'。
    • like

      public QuerySpec like(String item, String value)
      item like '%value%',自动补前后通配符。
      参数:
      item - 字段名
      value - 关键词,内部单引号会被转义
      返回:
      自身
    • isNull

      public QuerySpec isNull(String item)
      item is null。
    • notNull

      public QuerySpec notNull(String item)
      item is not null,对应样例中的 compy=" is " value=" not null "。
    • number

      public QuerySpec number(String item, CompareOp op, String number)
      数值比较,值不加引号原样下发。
      参数:
      item - 字段名
      op - 比较符
      number - 数值的字符串形态,必须是合法十进制数
      返回:
      自身
    • raw

      public QuerySpec raw(String item, CompareOp op, String value, String splice)
      完全自控的条件,值原样写入 value 属性。
      参数:
      item - 字段名
      op - 比较符
      value - 原样下发的值
      splice - AND 或 OR
      返回:
      自身
    • orEq

      public QuerySpec orEq(String item, String value)
      用 OR 追加一个等值条件。
      参数:
      item - 字段名
      value - 字符串值
      返回:
      自身
    • orLike

      public QuerySpec orLike(String item, String value)
      用 OR 追加一个 LIKE 条件。
      参数:
      item - 字段名
      value - 关键词
      返回:
      自身
    • orderBy

      public QuerySpec orderBy(String item, SortOrder order)
      追加排序,可多次调用形成多级排序。
      参数:
      item - 字段名
      order - 升降序
      返回:
      自身
    • pageSize

      public QuerySpec pageSize(int dataAmount)
      覆盖本次请求的单页行数。
      参数:
      dataAmount - 正整数
      返回:
      自身
    • triggerPaging

      public QuerySpec triggerPaging(int triggerData)
      开启平台分页:结果行数超过该阈值时平台会分多次返回。

      同步 WebService 无法按页码回取后续结果,SDK 会在 totalPage > 1 时告警, 建议改用业务条件(例如按 UPDATE_DATETIME 分段)拉取。

      参数:
      triggerData - 触发分页的行数阈值
      返回:
      自身
    • queryWhere

      public QuerySpec queryWhere(String queryWhere)
      直接指定 MsgInfo/Msg 里的自由查询条件文本,例如 and pat_id='1' and card_id='3303'。
      参数:
      queryWhere - 条件片段,由调用方负责正确性
      返回:
      自身
    • distinct

      public QuerySpec distinct(boolean distinct)
      是否要求平台去重。定义书提示开启去重会显著降低查询效率。
      参数:
      distinct - true 开启
      返回:
      自身
    • conditions

      public List<QueryCondition> conditions()
      返回:
      条件列表,只读视图
    • orders

      public List<String[]> orders()
      返回:
      排序列表,每项为 [字段名, asc|desc]
    • queryWhere

      public String queryWhere()
      返回:
      自由条件文本,未设置时 null
    • distinct

      public boolean distinct()
      返回:
      是否去重
    • dataAmount

      public Integer dataAmount()
      返回:
      本次请求的行数上限覆盖值,未设置时 null
    • triggerData

      public Integer triggerData()
      返回:
      分页阈值覆盖值,未设置时 null
    • isEmpty

      public boolean isEmpty()
      返回:
      是否没有任何过滤条件