@sinoform/helper-condition-api v1.18.11
@sinoform/helper-condition-api
构建 API 查询条件的辅助模块。
支持两种风格构建 API 查询条件,即:
- 流式方法
- sql 模板
根据个人喜好,两种风格二选一即可。
简单示例
查询姓名包含 张 的查询条件。
流式方法:
import { build$ } from '@sinoform/helper-condition-api';
const currentUser = getCurrentUser();
const context = { formDesignId: '表单id', currentUser };
const $ = build$(context);
// 创建查询条件
const condition = $('userName').contain('张');
// 或者
condition = $('userName').like('%张%');sql 模板风格:
import { sql } from '@sinoform/helper-condition-api';
const condition = sql`userName like '%张%'`;组合多个查询条件
可以使用 and、or、not 逻辑运算符组合多个查询条件。
示例 1
import { build$ } from '@sinoform/helper-condition-api';
const currentUser = getCurrentUser();
const context = { formDesignId: '表单id', currentUser };
const $ = build$(context);
const useNameCondition = $('userName').contain('张');
const ageCondition = $('age').gt(18);
const condition = $.and(userNameCondition, ageCondition);import { sql } from '@sinoform/helper-condition-api';
const condition = sql`
USER_NAME like '%张%'
AND age > 18
`;示例 2
import { $ } from '@sinoform/helper-condition-api';
const condition = $.or(
$('userName').contain('张'),
$('userName').contain('李'),
);import { sql } from '@sinoform/helper-condition-api';
const condition = sql`
USER_NAME like '%张%'
OR USER_NAME like '%李%'
`;示例 3
import { $ } from '@sinoform/helper-condition-api';
const condition = $.and(
$.or($('userName').contain('张'), $('userName').contain('李')),
$('age').gt(18),
);import { sql } from '@sinoform/helper-condition-api';
const condition = sql`
(
USER_NAME like '%张%'
OR USER_NAME like '%李%'
) AND (
age > 18
)
`;支持的操作符
| 操作符 | 说明 |
|---|---|
| equal | 相等比较操作符 |
| notEqual | 不相等比较操作符 |
| contain | 文本包含操作符,相当于 like '%文本%' |
| notContain | 文本不包含操作符 |
| isNull | 空判定操作符 |
| notNull | 非空判定操作符 |
| lt | 小于操作符 |
| gt | 大于操作符 |
| lte | 小于等于操作符 |
| gte | 大于等于操作符 |
| in | 包含操作符 |
| is | is null场景中使用的操作符 |
| isNot | is not null 场景使用的操作符 |
| like | 文本包含操作符 |
| notLike | 文本不包含操作符 |
| range | 区间操作符,相当于 between x and y |
| and | 并且逻辑操作符,使用 and 组合的多个查询条件是必须都要满足的 |
| or | 或者逻辑操作符,使用 or 组合的多个查询条件只需要满足一个即可 |
| not | 非逻辑操作符,使用 not 包裹的查询条件表示查询不满足此查询条件的数据 |
| querySelfAll | 仅查询出自己可见的所有数据 |
| queryDeptAll | 查询出自己和部门可见的所有数据 |
equal
相等性比较
$('field_1').equal('10');sql`field_1 = '10'`;notEqual
不相等比较
$('field_1').notEqual('10');sql`field_1 <> '10'`;contain
文本包含关系
$('field_1').contain('张');sql`field_1 like '%张%'`;notContain
字符串不包含的关系
$('field_1').notContain('张');sql`field_1 not like '%张%'`;isNull
判断是否为空
$('field_1').isNull();sql`field_1 is null`;notNull
判断是否非空
$('field_1').notNull();field_1 is not nullisEmpty
判断是否为空
$('field_1').isEmpty();sql`field_1 is null or field_1 = ''`;notEmpty/isNotEmpty
判断是否非空
$('field_1').isNotEmpty();sql`field_1 is not null and field_1 <> ''`;lt
小于
$('field_1').lt(10);sql`field_1 < 10`;gt
大于
$('field_1').gt(10);sql`field_1 > 10`;lte
小于等于
$('field_1').lte(10);sql`field_1 <= 10`;gte
大于等于
$('field_1').gte(10);sql`field_1 >= 10`;in
数组包含关系
$('field_1').in('类型1', '类型2', '类型3');sql`field_1 in ('类型1', '类型2', '类型3')`;is
$('field_1').is(null);sql`field_1 is null`;isNot
$('field_1').isNot(null);sql`field_1 is not null`;like
文本包含关系。
$('field_1').like('张%');sql`field_1 like '张%'`;notLike
文本不包含关系
$('field_1').notLike('张%');sql`
field_1 not like '张%'
`;range
between ... and ...
$('field_1').range(1, 3);sql`
field_1 between 1 and 3
`;and
逻辑与的关系
$.and($('field_1').gt(10), $('field_1').lt(100), $('user_name').equal('张三'));sql`
field_1 > 10 and field_1 < 100 and user_name = '张三'
`;or
逻辑或的关系
$.or($('field_1').gt(10), $('field_1').lt(100), $('user_name').equal('张三'));sql`
field_1 > 10 or field_1 < 100 or user_name = '张三'
`;not
逻辑非的关系
$.not($('field_1').equal(10));
// 或者
$('field_1').not.equal(10);sql`
!(field_1 = 10)
`;likeLeft
文本左包含关系
$('field_1').likeLeft('张');sql`field_1 like '张%'`;querySelfAll
查询仅自己可见的数据
import { build$ } from '@sinoform/helper-condition-api';
const currentUser = getCurrentUser();
const context = { formDesignId: '表单id', currentUser };
const $ = build$(context);
const condition = $.querySelfAll();相当于:
import { $ } from '@sinoform/helper-condition-api';
const condition = $.and(
$('PERM.FORMDESIGN_ID').equal(formDesignId),
$('PERM.SUBJECT_ID').equal(currentUserId),
);queryDeptAll
查询出自己和部门可见的数据
import { build$ } from '@sinoform/helper-condition-api';
const currentUser = getCurrentUser();
const context = { formDesignId: '表单id', currentUser };
const $ = build$(context);
const condition = $.queryDeptAll();相当于:
import { $ } from '@sinoform/helper-condition-api';
$.or(
$.and(
$('PERM.FORMDESIGN_ID').equal(formDesignId),
$('PERM.SUBJECT_ID').equal(currentUserId),
),
$.and(
$('PERM.FORMDESIGN_ID').equal(formDesignId),
$('PERM.SUBJECT_ID').equal(deptId),
$('PERM.SUBJECT_TYPE').equal('superDept'),
),
);2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago