📄 queryorder.java
字号:
/*
* Created on 2004-3-23
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.esimple.framework.dao.support;
import java.util.ArrayList;
import net.sf.hibernate.expression.Order;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author steven
*
*/
public class QueryOrder {
public static final String ORDER_ASC = "asc";
public static final String ORDER_DESC = "desc";
public static final String ORDER_TYPE = "orderType";
public static final String ORDER_COLUMN = "orderColumn";
private ArrayList columns = new ArrayList();
private ArrayList hiberanteOrder = new ArrayList();
protected Log logger = LogFactory.getLog(this.getClass());
public QueryOrder(String columnName){
addColumn( columnName );
}
public QueryOrder(String columnName,String orderType){
if( orderType != null && columnName!= null ){
boolean blType;
if( orderType.equalsIgnoreCase(ORDER_ASC)){
blType = true;
}else{
blType = false;
}
addColumn( columnName,blType );
}
}
public QueryOrder(String columnName,boolean orderType){
addColumn( columnName,orderType );
}
public QueryOrder(String columnName,boolean orderType,boolean nullFirst){
addColumn( columnName,orderType,nullFirst );
}
/**
* 增加一个排序字段(默认排序类型为ASC
* @param columnName 字段名称
*/
public void addColumn(String columnName){
if( columnName == null ) return;
columnName = columnName.trim();
if( columnName.length() == 0 ) return;
columns.add( new OrderColumn(columnName) );
}
/**
* 增加一个排序字段
* @param columnName 字段名称
* @param orderType 排序类型(是否使用asc类型)
*/
public void addColumn(String columnName,boolean orderType){
if( columnName == null ) return;
columnName = columnName.trim();
if( columnName.length() == 0 ) return;
columns.add( new OrderColumn(columnName,orderType));
}
/**
* 增加一个排序字段
* @param columnName 字段名称
* @param orderType 排序类型(是否使用asc类型)
* @param nullFirst 空值是否放置在前面
*/
public void addColumn(String columnName,boolean orderType,boolean nullFirst){
if( columnName == null ) return;
columnName = columnName.trim();
if( columnName.length() == 0 ) return;
columns.add( new OrderColumn(columnName,orderType,nullFirst));
}
/**
* 根据排序字段信息创建order by 子句
* @return sql order by 子句
*/
public String getClause(){
if( columns.size() <=0 ) return null;
StringBuffer temp = new StringBuffer("ORDER BY ");
for( int i = 0 ; i< columns.size(); i ++ ){
temp.append( ((OrderColumn) columns.get(i)).getClause() );
if( i < (columns.size()-1) )
temp.append(",");
}
logger.debug( temp.toString() );
return temp.toString();
}
/**
* 根据排序字段信息创建hiberante Order对象集合
* @return ArrayList
*/
public ArrayList getHibernateOrders(){
if( columns.size() <=0 ) return null;
if( hiberanteOrder.size() >=1 ) return hiberanteOrder;
for( int i =0;i< columns.size();i++ ){
if( logger.isDebugEnabled() ){
String clause = ((OrderColumn)columns.get(i)).getClause();
logger.debug("create hibernate Order with"+clause );
}
hiberanteOrder.add(
((OrderColumn) columns.get(i)).getHibernateOrder()
);
}
return hiberanteOrder;
}
public boolean isNull(){
return columns.isEmpty();
}
class OrderColumn {
private String columnName;
private String orderType="";
private boolean nullFirst=false;
private boolean selectNulls=false;
public OrderColumn(String columnName){
this.columnName = columnName;
this.orderType = ORDER_ASC;
}
public OrderColumn(String columnName,boolean ASC){
this.columnName = columnName;
if( ASC){
this.orderType = ORDER_ASC;
}else{
this.orderType = ORDER_DESC;
}
}
/**
* @param columnName 排序字段名
* @param ASC 排序类型(是否使用asc类型)
* @param nullFirst 空值是否放置在前面
*/
public OrderColumn(String columnName,boolean ASC,boolean nullFirst){
this(columnName,ASC);
this.nullFirst = nullFirst;
this.selectNulls = true;
}
public String getColumnName() {
return this.columnName;
}
public String getOrderType(){
return this.orderType;
}
public String getNullsPosition(){
if( nullFirst){
return "nulls first";
}else{
return "nulls last";
}
}
public String getClause(){
StringBuffer buffer = new StringBuffer(columnName);
buffer.append(" ");
buffer.append(orderType);
if( selectNulls ) {
buffer.append(" ");
buffer.append( getNullsPosition() );
}
return buffer.toString();
}
public Order getHibernateOrder(){
if( orderType.equalsIgnoreCase(ORDER_DESC ) ){
return Order.desc( columnName );
}else{
return Order.asc( columnName );
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -