📄 sqlhelper.java
字号:
throw new NoodleSQLHelperException("类字段与返回数据字段数量不匹配");
}
String javaType = "";
String jdbcType = "";
for( int i=0; i<clazzFieldCount; i++ ){
javaType = clazzFields[i].getType().getName();
jdbcType = resMetaData.getColumnClassName(i+1);
//System.out.println( "javaType is:["+javaType+"]" );
//System.out.println( "jdbcType is:["+jdbcType+"]" );
if( javaType.equals( "int" ) ){
javaType = "java.lang.Integer";
} else if( javaType.equals( "short" ) ){
javaType = "java.lang.Short";
} else if( javaType.equals( "long" ) ){
javaType = "java.lang.Long";
} else if( javaType.equals( "float" ) ){
javaType = "java.lang.Float";
} else if( javaType.equals( "double" ) ){
javaType = "java.lang.Double";
} else if( javaType.equals( "boolean" ) ){
javaType = "java.lang.Boolean";
} else if( javaType.equals( "byte" ) ){
javaType = "java.lang.Byte";
}
if( jdbcType.trim().equals( "boolean" ) ){
if( !(javaType.trim().equals( "byte" ))
|| !(javaType.trim().equals( "java.lang.Byte" )) ){
//注意有byte[]的未处理
logger.error( this.getClass().getName()+"executeQuery( String sqlString , Class clazz )"
+"类字段类型与数据库返回类型不匹配,需要:[byte]或[java.lang.Byte]发现为:["+javaType+"]" );
throw new NoodleSQLHelperException( "类字段类型与数据库返回类型不匹配" );
}
}
if( !javaType.trim().equals( jdbcType.trim() ) ){
//注意有byte[]的未处理
logger.error( this.getClass().getName()+"executeQuery( String sqlString , Class clazz )"
+"类字段类型与数据库返回类型不匹配,需要:["+jdbcType
+"]发现为:["+javaType+"]" );
throw new NoodleSQLHelperException( "类字段类型与数据库返回类型不匹配" );
}
}
while( resultSet.next() ){
{
try{
Object object = clazz.newInstance();
String javaTypeName = "";
String jdbcTypeName = "";
//注意有byte[]的未处理
for( int i=0; i<clazzFieldCount; i++ ){
javaTypeName = clazzFields[i].getType().getName();
jdbcTypeName = resMetaData.getColumnClassName(i+1);
if( jdbcTypeName.equals( "java.sql.Array" ) ){
clazzFields[i].set( object, resultSet.getArray( i+1 ) );
} else if( jdbcTypeName.equals( "java.lang.Long" ) ){
long tmpLong = resultSet.getLong( i+1 );
if( resultSet.wasNull() ){
tmpLong = 0;
}
if( javaTypeName.equals( "long" ) ){
clazzFields[i].setLong( object, tmpLong );
} else if( javaTypeName.equals( "java.lang.Long" ) ){
clazzFields[i].set( object, new Long( tmpLong ) );
}
} else if( jdbcTypeName.equals( "java.lang.Boolean" ) ){
boolean tmpBoolean = resultSet.getBoolean( i+1 );
if( resultSet.wasNull() ){
tmpBoolean = false;
}
if( javaTypeName.equals( "boolean" ) ){
clazzFields[i].setBoolean( object, tmpBoolean );
} else if( javaTypeName.equals( "java.lang.Boolean" )){
clazzFields[i].set( object, new Boolean( tmpBoolean ) );
}
} else if( jdbcTypeName.equals( "java.sql.Blob" ) ){
clazzFields[i].set( object, resultSet.getBlob( i+1 ) );
} else if( jdbcTypeName.equals( "boolean" ) ){
byte tmpByte = resultSet.getByte( i+1 );
if( resultSet.wasNull() ){
tmpByte = 0;
}
if( javaTypeName.equals( "byte" ) ){
clazzFields[i].setByte( object, tmpByte );
} else if( javaTypeName.equals( "java.lang.Byte" )){
clazzFields[i].set( object, new Byte( tmpByte ) );
}
} else if( jdbcTypeName.equals( "java.lang.String" ) ){
clazzFields[i].set( object, resultSet.getString( i+1 ) );
} else if( jdbcTypeName.equals( "java.sql.Clob" ) ){
clazzFields[i].set( object, resultSet.getClob( i+1 ) );
} else if( jdbcTypeName.equals( "java.net.URL" ) ){
clazzFields[i].set( object, resultSet.getURL( i+1 ) );
} else if( jdbcTypeName.equals( "java.sql.Date" ) ){
clazzFields[i].set( object, resultSet.getDate( i+1 ) );
} else if( jdbcTypeName.equals( "java.math.BigDecimal" ) ){
clazzFields[i].set( object, resultSet.getBigDecimal( i+1 ) );
} else if( jdbcTypeName.equals( "java.lang.Double" ) ){
double tmpDouble = resultSet.getDouble( i+1 );
if( resultSet.wasNull() ){
tmpDouble = 0;
}
if( javaTypeName.equals( "double" )){
clazzFields[i].setDouble( object, tmpDouble );
} else if( javaTypeName.equals( "java.lang.Double" ) ){
clazzFields[i].set( object, new Double(tmpDouble) );
}
} else if( jdbcTypeName.equals( "java.lang.Integer" ) ){
int tmpInt = resultSet.getInt( i+1 );
if( resultSet.wasNull() ){
tmpInt = 0;
}
if( javaTypeName.equals( "int" )){
clazzFields[i].setInt( object, tmpInt );
} else if( javaTypeName.equals( "java.lang.Integer" )){
clazzFields[i].set( object, new Integer(tmpInt));
}
} else if( jdbcTypeName.equals( "java.lang.Object" ) ){
clazzFields[i].set( object, resultSet.getObject( i+1 ) );
} else if( jdbcTypeName.equals( "java.lang.Float" ) ){
float tmpFloat = resultSet.getFloat( i+1 );
if( resultSet.wasNull() ){
tmpFloat = 0;
}
if( javaTypeName.equals( "float" )){
clazzFields[i].setFloat( object, tmpFloat );
} else if( javaTypeName.equals( "java.lang.Float" )){
clazzFields[i].set( object, new Float( tmpFloat ) );
}
} else if( jdbcTypeName.equals( "java.lang.Short" ) ){
short tmpShort = resultSet.getShort( i+1 );
if( resultSet.wasNull() ){
tmpShort = 0;
}
if( javaTypeName.equals( "short" )){
clazzFields[i].setShort( object, tmpShort );
} else if( javaTypeName.equals( "java.lang.Short" )){
clazzFields[i].set( object, new Short(tmpShort) );
}
} else if( jdbcTypeName.equals( "java.sql.Time" ) ){
clazzFields[i].set( object, resultSet.getTime( i+1 ) );
} else if( jdbcTypeName.equals( "java.sql.Timestamp" ) ){
clazzFields[i].set( object, resultSet.getTimestamp( i+1 ) );
}
}
resultList.add( object );
} catch( SQLException e ){
logger.error( "结果集解析失败:["+e.getErrorCode()+"]" );
e.printStackTrace();
throw e;
}catch( Exception e ){
logger.error( "executeQuery( String sqlString , Class clazz ) 在进行类反射时错误" );
e.printStackTrace();
throw e;
}
}
}
return resultList;
}
//========================================================================================
//ResultSet 包装器
public List resultSetWraper( ResultSet resultSet, Class clazz, int bgnLine, int retLine ) throws SQLException, Exception {
LinkedList resultList = new LinkedList();
Field[] clazzFields = clazz.getDeclaredFields();
int clazzFieldCount = clazzFields.length;
int resultCount = 0;
int resultRet = 0;
ResultSetMetaData resMetaData = resultSet.getMetaData();
int columnCount = resMetaData.getColumnCount();
if( clazzFieldCount != columnCount ){
logger.error( this.getClass().getName()+"executeQuery( String sqlString , Class clazz )"
+"类字段与返回数据字段数量不匹配" );
throw new NoodleSQLHelperException("类字段与返回数据字段数量不匹配");
}
String javaType = "";
String jdbcType = "";
for( int i=0; i<clazzFieldCount; i++ ){
javaType = clazzFields[i].getType().getName();
jdbcType = resMetaData.getColumnClassName(i+1);
//System.out.println( "javaType is:["+javaType+"]" );
//System.out.println( "jdbcType is:["+jdbcType+"]" );
if( javaType.equals( "int" ) ){
javaType = "java.lang.Integer";
} else if( javaType.equals( "short" ) ){
javaType = "java.lang.Short";
} else if( javaType.equals( "long" ) ){
javaType = "java.lang.Long";
} else if( javaType.equals( "float" ) ){
javaType = "java.lang.Float";
} else if( javaType.equals( "double" ) ){
javaType = "java.lang.Double";
} else if( javaType.equals( "boolean" ) ){
javaType = "java.lang.Boolean";
} else if( javaType.equals( "byte" ) ){
javaType = "java.lang.Byte";
}
if( jdbcType.trim().equals( "boolean" ) ){
if( !(javaType.trim().equals( "byte" ))
|| !(javaType.trim().equals( "java.lang.Byte" )) ){
//注意有byte[]的未处理
logger.error( this.getClass().getName()+"executeQuery( String sqlString , Class clazz )"
+"类字段类型与数据库返回类型不匹配,需要:[byte]或[java.lang.Byte]发现为:["+javaType+"]" );
throw new NoodleSQLHelperException( "类字段类型与数据库返回类型不匹配" );
}
}
if( !javaType.trim().equals( jdbcType.trim() ) ){
//注意有byte[]的未处理
logger.error( this.getClass().getName()+"executeQuery( String sqlString , Class clazz )"
+"类字段类型与数据库返回类型不匹配,需要:["+jdbcType
+"]发现为:["+javaType+"]" );
throw new NoodleSQLHelperException( "类字段类型与数据库返回类型不匹配" );
}
}
while( resultSet.next() ){
{
if( resultCount >= bgnLine ){
if( resultRet >= retLine ){
break;
}
try{
Object object = clazz.newInstance();
String javaTypeName = "";
String jdbcTypeName = "";
//注意有byte[]的未处理
for( int i=0; i<clazzFieldCount; i++ ){
javaTypeName = clazzFields[i].getType().getName();
jdbcTypeName = resMetaData.getColumnClassName(i+1);
if( jdbcTypeName.equals( "java.sql.Array" ) ){
clazzFields[i].set( object, resultSet.getArray( i+1 ) );
} else if( jdbcTypeName.equals( "java.lang.Long" ) ){
long tmpLong = resultSet.getLong( i+1 );
if( resultSet.wasNull() ){
tmpLong = 0;
}
if( javaTypeName.equals( "long" ) ){
clazzFields[i].setLong( object, tmpLong );
} else if( javaTypeName.equals( "java.lang.Long" ) ){
clazzFields[i].set( object, new Long( tmpLong ) );
}
} else if( jdbcTypeName.equals( "java.lang.Boolean" ) ){
boolean tmpBoolean = resultSet.getBoolean( i+1 );
if( resultSet.wasNull() ){
tmpBoolean = false;
}
if( javaTypeName.equals( "boolean" ) ){
clazzFields[i].setBoolean( object, tmpBoolean );
} else if( javaTypeName.equals( "java.lang.Boolean" )){
clazzFields[i].set( object, new Boolean( tmpBoolean ) );
}
} else if( jdbcTypeName.equals( "java.sql.Blob" ) ){
clazzFields[i].set( object, resultSet.getBlob( i+1 ) );
} else if( jdbcTypeName.equals( "boolean" ) ){
byte tmpByte = resultSet.getByte( i+1 );
if( resultSet.wasNull() ){
tmpByte = 0;
}
if( javaTypeName.equals( "byte" ) ){
clazzFields[i].setByte( object, tmpByte );
} else if( javaTypeName.equals( "java.lang.Byte" )){
clazzFields[i].set( object, new Byte( tmpByte ) );
}
} else if( jdbcTypeName.equals( "java.lang.String" ) ){
clazzFields[i].set( object, resultSet.getString( i+1 ) );
} else if( jdbcTypeName.equals( "java.sql.Clob" ) ){
clazzFields[i].set( object, resultSet.getClob( i+1 ) );
} else if( jdbcTypeName.equals( "java.net.URL" ) ){
clazzFields[i].set( object, resultSet.getURL( i+1 ) );
} else if( jdbcTypeName.equals( "java.sql.Date" ) ){
clazzFields[i].set( object, resultSet.getDate( i+1 ) );
} else if( jdbcTypeName.equals( "java.math.BigDecimal" ) ){
clazzFields[i].set( object, resultSet.getBigDecimal( i+1 ) );
} else if( jdbcTypeName.equals( "java.lang.Double" ) ){
double tmpDouble = resultSet.getDouble( i+1 );
if( resultSet.wasNull() ){
tmpDouble = 0;
}
if( javaTypeName.equals( "double" )){
clazzFields[i].setDouble( object, tmpDouble );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -