基础查询及应用
在本章节,您将学习sqlEngine在基础查询时的用法
- 初始化sqlEngine
sqlEngine st = new sqlEngine();
- 指定主(查询)数据表
/**
* @param tableName 主数据表表名
* @param alias 主数据表别名(不填默认与表名一致)
*/
//select * from bs_voice as b
st.execute("bs_voice", "b");
- 设置查询结果字段(返回值)
/**
* @param appointTable 指定待查询的数据表别名
* @param exAppointType 标记需要对数据执行特殊处理
* DEF:默认 | PRIVACY_TEL:隐私字段,手机号 | PRIVACY_IDCARD:隐私字段,身份证
* DISTINCT:去重 | AVG: 平均值 | COUNTDIS: 行数,数据去重
* COUNT:行数 | MAX:最大值 | MIN:最小值 | SUM:求和
* @param appointColumns 字段以逗号隔开,如需指定别名可按照 原列名#列别名 进行设置
* 若为空,则视为查询当前表全部字段
*/
// select b.*
st.appointColumn("b", groupType.DEF, "");
// select b.name as uname ...
st.appointColumn("b", groupType.DEF, "name#uname,note#ucode");
- 设置查询条件(Where条件)
/**
* @param queryType where条件关联类型
* and:和 | or: 或
* andMerge: 合并条件,以and开始 | orMerge:合并条件,以or开始
* andMergeEnd:合并条件,以and结束 | orMergeEnd:合并条件,以or结束
* 合并条件最终呈现效果为:1=1 and (2=2 and 3=3 or 4=4)
* @param table 查询需要使用的表别名
* @param key 查询需要使用的表字段名(非特殊情况下,建议在字段名前加@)
* @param conditionType 查询类型
* EQ:等于 | LIKE:模糊查询 | NOT_LIKE: 反向模糊查询
* LIKE_BINARY:忽略中英文大小写匹配的模糊查询
* LIKE_ESCAPE:支持通配符(转义)的模糊查询
* NOT_LIKE_ESCAPE:支持通配符(转义)的反向模糊查询
* LIKE_BINARY_ESCAPE:支持通配符(转义)并且忽略中英文大小写匹配的模糊查询
* GT:大于 | GTEQ:大于等于 | LT:小于 | LTEQ:小于等于
* NEQ:不等于 | IN:包含 | NOTIN: 不包含 | ISNULL: 为空
* NOTNULL:不为空 | QUERY_ROLE:调用函数方法(权限树匹配)
* BET:在……区间,Between and……
* @param exQueryType 是否需要对当前字段进行特殊处理
* DEF:默认 | PRIVACY_TEL:隐私字段,手机号 | PRIVACY_IDCARD:隐私字段,身份证
* DISTINCT:去重 | AVG: 平均值 | COUNTDIS: 行数,数据去重
* COUNT:行数 | MAX:最大值 | MIN:最小值 | SUM:求和
* @param value 如果exCaseType不为null或DEF,则value入参格式为table||key!
*/
// select * from u where u.state = 0
st.queryBuild(queryType.and, "u", "@state", conditionType.EQ, groupType.DEF, "0");
// select * from t where t.name like '%'+name+'%'
st.queryBuild(queryType.and, "t", "@name", conditionType.LIKE, groupType.DEF, "%" + name + "%");
- 排序
/**
* @param table 查询需要使用的表别名
* @param key 查询需要使用的表字段名
* @param sortType 排序类型(正序:ASC,倒序:DESC,中文正序:UTF_ASC,中文倒序:UTF_DESC)
*/
// select * from t order by t.staff_id desc
st.dataSort("t","staff_id",sortType.DESC);
- 分页
/**
* @param pageNo 当前第几页动态参数
* @param pageSize 每页查询/展示X条动态参数
*/
// select * from t limit 0,10
st.dataPaging("@0", "@10");
- 根据已有条件获取总行(条目)数
// select count(1) from t
st.selectTotal();
- 连表查询
// select * from t left join sys_role u on u.id = t.rid
/**
* joinBuild : 初始化连表信息
* @param joinTable 子表表名
* @param joinAlias 子表别名
* @param joinType 关联类型
* N:全连接(普通,以逗号隔开的那种)
* R:左外联
* L:右外链
* C:join
* I:inner join
*/
st.joinBuild("sys_role", "u", joinType.L);
/**
* joinColunm: 主子表关系字段构造器(默认指定使用主表)
* @param joinTable 所连接的主表表名
* @param joinFrom 主表外键字段
* @param joinTo 字表连接字段
*/
st.joinColunm("u", "id", "t", "rid");
/**
* 表示并通知引擎本次连表已结束(*关键!)
*/
st.joinFin()
- 分组
/**
* @param groupTable 需要分组的表别名
* @param groupColumns 需要分组的表内字段,支持多字段,逗号隔开
*/
// select * from t group by t.id
st.groupBuild("t","id");
/**
* 分组:字段输出
* 本方法等同于1.3 st.appointColumn("a", groupType.AVG, "a1,a2");
* @param groupType 是否需要对字段做特殊处理
* DEF:默认 | PRIVACY_TEL:隐私字段,手机号 | PRIVACY_IDCARD:隐私字段,身份证
* DISTINCT:去重 | AVG: 平均值 | COUNTDIS: 行数,数据去重
* COUNT:行数 | MAX:最大值 | MIN:最小值 | SUM:求和
* @param groupTable 主表别名
* @param groupColumns 主表分组查询的字段
*/
st.groupColumn(groupType.AVG,"a","a1,a2");
- 查询结束
/**
* 表示并通知引擎本次查询已结束(*关键!)
* 每一个sqlEngine最后都必须存在一个selectFin标记
*/
st.selectFin("");
复杂查询及应用
在本章节,您将学习sqlEngine较为复杂的拓展用法
- Case When Then 条件构造器
// select case when a.aa = aaa then 1 else 2 end as haha1
/**
* 初始化case构造器
* @param caseAlias a#b code#注释 (当前构造器的名称及别名),无注释视为与名称一致
*/
st.caseBuild("haha#haha1");
/**
* 初始化执行条件
* 具体参数请参考1.4:查询条件
*/
st.caseWhenQuery(queryType.and,"a","@aa",conditionType.EQ,groupType.DEF,"aaa");
/**
* 初始化执行条件输出结果 (每一个caseWhenQuery都需要有一个指定的caseThen)
* @param thenValue 输出结果
*/
st.caseThen("1");
/**
* 条件构造器结束标识
* @param elseValue 当前构造器默认输出(不符合其他条件的输出)
*/
st.caseFin("2");
- 分组:Having聚合查询
/**
* 需要与groupBuild一起使用!(先有groupBuild再使用本api)
* @param groupType 聚合类型
* @param 其他字段参数请参考1.4 where条件参数
*/
// select * from t having avg(a1) = 0 group by a1 desc
st.groupHaving(groupType.AVG,queryType.and,"a","@a1",conditionType.EQ,"0");
- 子表关联查询
当需要将一个sqlEngine作为子表使用时,可以参照以下示例:
// 初始化作为子查询的sqlEngine
// 最终输出结果: select * from t as t;
sqlEngine child = new sqlEngine()
.execute("t", "t").selectFin("");
// 初始化作为主查询的sqlEngine
// 最终输出结果: select * from (select * from t as t) as a;
sqlEngine st = new sqlEngine()
.executeChild(child,"a").selectFin("");
- 通过引擎无法实现的查询
// 使用setSelect不需要加selectFin (特殊的用法)
sqlEngine child = new sqlEngine()
.setSelect(" your sql ");
增删改相关应用
- 通过引擎无法实现的增删改查操作查询语句
// 使用setExecute不需要加selectFin (特殊的用法)
sqlEngine child = new sqlEngine()
.setExecute(" your sql ");
- 其他sql已兼容至baseApi,直接调用即可
版权声明:本文为qq_27047215原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。