@date 2019年4月29日上午11:32:02 @desc Select语法操作类
| 30 | * @desc Select语法操作类 |
| 31 | */ |
| 32 | public class Select extends com.sql.parse.statement.Select { |
| 33 | private net.sf.jsqlparser.statement.select.Select select; |
| 34 | |
| 35 | public Select(net.sf.jsqlparser.statement.select.Select select) { |
| 36 | this.select = select; |
| 37 | } |
| 38 | |
| 39 | public Select(Table table) { |
| 40 | this.select = SelectUtils.buildSelectFromTable(transformTable(table)); |
| 41 | isChangeColumn = true; |
| 42 | } |
| 43 | |
| 44 | public Select(String tableName) { |
| 45 | this(new Table(tableName)); |
| 46 | } |
| 47 | |
| 48 | /*public Select(Owner table, SelectItem... columns) { |
| 49 | if(columns.length==0){ |
| 50 | this.select = SelectUtils.buildSelectFromTable(table.getTable()); |
| 51 | }else{ |
| 52 | SelectExpressionItem[] array = new SelectExpressionItem[columns.length]; |
| 53 | for (int i = 0; i < columns.length; i++) { |
| 54 | array[i] = columns[i].getColumn(); |
| 55 | } |
| 56 | this.select = SelectUtils.buildSelectFromTableAndSelectItems(table.getTable(), array); |
| 57 | } |
| 58 | }*/ |
| 59 | |
| 60 | private net.sf.jsqlparser.schema.Table transformTable(Table table) { |
| 61 | net.sf.jsqlparser.schema.Table t = new net.sf.jsqlparser.schema.Table(table.getTableName()); |
| 62 | if (table.getAlias() != null) { |
| 63 | Alias alias = new Alias(table.getAlias(), table.isUseAs()); |
| 64 | t.setAlias(alias); |
| 65 | } |
| 66 | return t; |
| 67 | } |
| 68 | |
| 69 | @Override |
| 70 | public String getSql(boolean safe) { |
| 71 | /*where条件为空时,添加[rownum<500]或[limit 500]的条件表达式*/ |
| 72 | Select mySelect = this.clone(); |
| 73 | PlainSelect plainSelect = (PlainSelect) mySelect.getSelect().getSelectBody(); |
| 74 | if (plainSelect.getLimit() == null) { |
| 75 | boolean flag = true; |
| 76 | List<net.sf.jsqlparser.statement.select.SelectItem> selectItems = plainSelect.getSelectItems(); |
| 77 | if (selectItems.size() == 1) { |
| 78 | net.sf.jsqlparser.statement.select.SelectItem selectItem = selectItems.get(0); |
| 79 | if (!(selectItem instanceof AllColumns)) { |
| 80 | Expression expression = ((SelectExpressionItem) selectItem).getExpression(); |
| 81 | if (expression instanceof Function && "count".equals(((Function) expression).getName())) { |
| 82 | flag = false; |
| 83 | } |
| 84 | } |
| 85 | } |
| 86 | if (plainSelect.getWhere() != null) { |
| 87 | flag = false; |
| 88 | } |
| 89 | if (safe && flag) { |
nothing calls this directly
no outgoing calls
no test coverage detected