博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SqlBuilder
阅读量:7033 次
发布时间:2019-06-28

本文共 3870 字,大约阅读时间需要 12 分钟。

hot3.png

import org.apache.ibatis.jdbc.AbstractSQL;import java.util.List;public class SqlBuilder extends AbstractSQL
{ public SqlBuilder SELECT_AS(String column, String alias) { return SELECT(column + " AS " + alias); } public SqlBuilder SELECT_DISTINCT_AS(String column, String alias) { return SELECT(String.format("DISTINCT(%s) AS %s", column, alias)); } public SqlBuilder SELECT_COUNT(String columns) { return SELECT("COUNT(" + columns + ")"); } public SqlBuilder SELECT_COUNT() { return SELECT_COUNT("*"); } public SqlBuilder FROM_AS(String table, String alias) { return FROM(table + " AS " + alias); } public SqlBuilder WHERE_LIKE(String column, String keyword) { return WHERE(column + " LIKE " + buildLikeCondition(keyword, true, true)); } public SqlBuilder WHERE_LIKE_LEFT(String column, String keyword) { return WHERE(column + " LIKE " + buildLikeCondition(keyword, true, false)); } public SqlBuilder WHERE_LIKE_RIGHT(String column, String keyword) { return WHERE(column + " LIKE " + buildLikeCondition(keyword, false, true)); } public SqlBuilder WHERE_IN(String column, List
list) { return WHERE(column + " IN " + buildArrayCondition(list)); } public SqlBuilder WHERE_NOT_IN(String column, List
list) { return WHERE(column + " NOT IN " + buildArrayCondition(list)); } public SqlBuilder ORDER_BY_ASC(String columns) { return ORDER_BY(columns + " ASC"); } public SqlBuilder ORDER_BY_DESC(String columns) { return ORDER_BY(columns + " DESC"); } public String buildSql() { return toString(); } public String buildSqlAppendLimit(int pageSize, int pageNum) { int offset = (pageNum - 1) * pageSize; return toString() + String.format(" LIMIT %d, %d", offset, pageSize) ; } @Override public SqlBuilder getSelf() { return this; } /** * 构造数组查询条件,用于"IN"或"NOT IN"条件查询 * @param list 参数列表,不能为空,仅支持数字或字符串的条件构造 * @return 构造结果,如(123,456,789)、('aa','bb','cc') */ public static String buildArrayCondition(List
list) { if (list == null || list.isEmpty()) { throw new IllegalArgumentException("args must not be empty"); } StringBuilder arrayCondition = new StringBuilder("("); for (Object arg : list) { if (arg == null) { continue; } if (arg instanceof Number) { // 数字 arrayCondition.append(arg); } else if (arg instanceof String) { // 字符串 arrayCondition.append("'"); arrayCondition.append(arg); arrayCondition.append("'"); } else { // 其他不支持 throw new IllegalArgumentException("unsupported args"); } arrayCondition.append(','); } // 替换最后一个“,”为“)” arrayCondition.replace(arrayCondition.lastIndexOf(","), arrayCondition.length(), ")"); return arrayCondition.toString(); } public static String buildLikeCondition(String keyword) { return buildLikeCondition(keyword, true, true); } public static String buildLikeCondition(String keyword, boolean likePre, boolean likePost) { if (keyword == null) { throw new IllegalArgumentException("keyword must not be null"); } if (!likePre && !likePost) { throw new IllegalArgumentException("either likePre or likePost should be true"); } StringBuilder sb = new StringBuilder("CONCAT("); if (likePre) { sb.append("'%', "); } sb.append(keyword); if (likePost) { sb.append(", '%'"); } sb.append(")"); return sb.toString(); }}

转载于:https://my.oschina.net/u/812874/blog/863383

你可能感兴趣的文章
php二维数组访问
查看>>
用Shell实现俄罗斯方块代码(Tetris.sh)
查看>>
[zz]Ubuntu Hadoop HDFS 配置
查看>>
上市后Avaya锣鼓全开,加速战略布局规划
查看>>
日调度5万亿次,腾讯云发布企业级微服务中间件TSF
查看>>
海外侨胞建言四川对外开放:加强内陆省份竞争力成关键
查看>>
2019款奥迪Q7上市 配置增加/69.98万元起售
查看>>
策划求婚、陪挑婚纱,新郎不是我,仍感谢你来过|在百度遇见你
查看>>
从零单排学Redis【铂金一】
查看>>
如何处理Express异常
查看>>
Cycle.js 状态管理模型
查看>>
[译]Effective Kotlin系列之考虑使用原始类型的数组优化性能(五)
查看>>
为什么我从 Google 辞职而为自己工作
查看>>
技术问答集锦(四)
查看>>
针对虚拟机搭建centos7不能上网问题处理方法
查看>>
React 源码分析
查看>>
JavaScript 算法之复杂度分析
查看>>
第六章——函数(inout参数与变异方法)
查看>>
掘金翻译计划月报 — 2018 年 2 月
查看>>
Android属性动画
查看>>