📄 db2dialect.java
字号:
//$Id: DB2Dialect.java,v 1.7.2.7 2004/01/27 22:01:41 oneovthafew Exp $package net.sf.hibernate.dialect;import java.sql.Types;import net.sf.hibernate.cfg.Environment;/** * An SQL dialect for DB2. * @author Gavin King */public class DB2Dialect extends Dialect { public DB2Dialect() { super(); registerColumnType( Types.BIT, "SMALLINT" ); registerColumnType( Types.BIGINT, "BIGINT" ); registerColumnType( Types.SMALLINT, "SMALLINT" ); registerColumnType( Types.TINYINT, "SMALLINT" ); registerColumnType( Types.INTEGER, "INTEGER" ); registerColumnType( Types.CHAR, "CHAR(1)" ); registerColumnType( Types.VARCHAR, "VARCHAR($l)" ); registerColumnType( Types.FLOAT, "FLOAT" ); registerColumnType( Types.DOUBLE, "DOUBLE" ); registerColumnType( Types.DATE, "DATE" ); registerColumnType( Types.TIME, "TIME" ); registerColumnType( Types.TIMESTAMP, "TIMESTAMP" ); registerColumnType( Types.VARBINARY, "VARCHAR($l) FOR BIT DATA" ); registerColumnType( Types.NUMERIC, "NUMERIC(19, $l)" ); registerColumnType( Types.BLOB, "BLOB($l)" ); registerColumnType( Types.CLOB, "CLOB($l)" ); getDefaultProperties().setProperty(Environment.USE_OUTER_JOIN, "true"); getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, NO_BATCH); } public String getAddColumnString() { return "add column"; } public boolean dropConstraints() { return false; } public boolean supportsIdentityColumns() { return true; } public String getIdentitySelectString() { return "values IDENTITY_VAL_LOCAL()"; } public String getIdentityColumnString() { return "not null generated by default as identity"; } public String getIdentityInsertString() { return "default"; } public String getSequenceNextValString(String sequenceName) { return "values nextval for " + sequenceName; } public String getCreateSequenceString(String sequenceName) { return "create sequence " + sequenceName; } public String getDropSequenceString(String sequenceName) { return "drop sequence " + sequenceName + " restrict"; } public boolean supportsSequences() { return true; } public boolean supportsLimit() { return true; } public String getLimitString(String sql, boolean hasOffset) { StringBuffer rownumber = new StringBuffer(50) .append(" rownumber() over("); int orderByIndex = sql.toLowerCase().indexOf("order by"); if (orderByIndex>0) rownumber.append( sql.substring(orderByIndex) ); rownumber.append(") as row_,"); StringBuffer pagingSelect = new StringBuffer( sql.length()+100 ) .append("select * from ( ") .append(sql) .insert( getAfterSelectInsertPoint(sql), rownumber.toString() ) .append(" ) as temp_ where row_ "); if (hasOffset) { pagingSelect.append("between ?+1 and ?"); } else { pagingSelect.append("<= ?"); } return pagingSelect.toString(); } public boolean useMaxForLimit() { return true; } private static int getAfterSelectInsertPoint(String sql) { return 16 + ( sql.startsWith("select distinct") ? 15 : 6 ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -