📄 simpleselect.java
字号:
//$Id: SimpleSelect.java 7627 2005-07-24 06:53:06Z oneovthafew $package org.hibernate.sql;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.hibernate.LockMode;import org.hibernate.dialect.Dialect;/** * An SQL <tt>SELECT</tt> statement with no table joins * * @author Gavin King */public class SimpleSelect { public SimpleSelect(Dialect dialect) { this.dialect = dialect; } //private static final Alias DEFAULT_ALIAS = new Alias(10, null); private String tableName; private String orderBy; private Dialect dialect; private LockMode lockMode = LockMode.READ; private String comment; private List columns = new ArrayList(); private Map aliases = new HashMap(); private List whereTokens = new ArrayList(); public SimpleSelect addColumns(String[] columnNames, String[] columnAliases) { for ( int i=0; i<columnNames.length; i++ ) { if ( columnNames[i]!=null ) { addColumn( columnNames[i], columnAliases[i] ); } } return this; } public SimpleSelect addColumns(String[] columns, String[] aliases, boolean[] ignore) { for ( int i=0; i<ignore.length; i++ ) { if ( !ignore[i] && columns[i]!=null ) { addColumn( columns[i], aliases[i] ); } } return this; } public SimpleSelect addColumns(String[] columnNames) { for ( int i=0; i<columnNames.length; i++ ) { if ( columnNames[i]!=null ) addColumn( columnNames[i] ); } return this; } public SimpleSelect addColumn(String columnName) { columns.add(columnName); //aliases.put( columnName, DEFAULT_ALIAS.toAliasString(columnName) ); return this; } public SimpleSelect addColumn(String columnName, String alias) { columns.add(columnName); aliases.put(columnName, alias); return this; } public SimpleSelect setTableName(String tableName) { this.tableName = tableName; return this; } public SimpleSelect setLockMode(LockMode lockMode) { this.lockMode = lockMode; return this; } public SimpleSelect addWhereToken(String token) { whereTokens.add(token); return this; } private void and() { if ( whereTokens.size()>0 ) { whereTokens.add("and"); } } public SimpleSelect addCondition(String lhs, String op, String rhs) { and(); whereTokens.add( lhs + ' ' + op + ' ' + rhs ); return this; } public SimpleSelect addCondition(String lhs, String condition) { and(); whereTokens.add( lhs + ' ' + condition ); return this; } public SimpleSelect addCondition(String[] lhs, String op, String[] rhs) { for ( int i=0; i<lhs.length; i++ ) { addCondition( lhs[i], op, rhs[i] ); } return this; } public SimpleSelect addCondition(String[] lhs, String condition) { for ( int i=0; i<lhs.length; i++ ) { if ( lhs[i]!=null ) addCondition( lhs[i], condition ); } return this; } public String toStatementString() { StringBuffer buf = new StringBuffer( columns.size()*10 + tableName.length() + whereTokens.size() * 10 + 10 ); if ( comment!=null ) { buf.append("/* ").append(comment).append(" */ "); } buf.append("select "); Set uniqueColumns = new HashSet(); Iterator iter = columns.iterator(); boolean appendComma = false; while ( iter.hasNext() ) { String col = (String) iter.next(); String alias = (String) aliases.get(col); if ( uniqueColumns.add(alias==null ? col : alias) ) { if (appendComma) buf.append(", "); buf.append(col); if ( alias!=null && !alias.equals(col) ) { buf.append(" as ") .append(alias); } appendComma = true; } } buf.append(" from ") .append( dialect.appendLockHint(lockMode, tableName) ); if ( whereTokens.size() > 0 ) { buf.append(" where ") .append( toWhereClause() ); } if (orderBy!=null) buf.append(orderBy); if (lockMode!=null) { buf.append( dialect.getForUpdateString(lockMode) ); } return dialect.transformSelectString( buf.toString() ); } public String toWhereClause() { StringBuffer buf = new StringBuffer( whereTokens.size() * 5 ); Iterator iter = whereTokens.iterator(); while ( iter.hasNext() ) { buf.append( iter.next() ); if ( iter.hasNext() ) buf.append(' '); } return buf.toString(); } public SimpleSelect setOrderBy(String orderBy) { this.orderBy = orderBy; return this; } public SimpleSelect setComment(String comment) { this.comment = comment; return this; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -