mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix code
This commit is contained in:
@@ -1,23 +1,10 @@
|
||||
package cn.hutool.db;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.lang.func.SerFunction;
|
||||
import cn.hutool.db.dialect.Dialect;
|
||||
import cn.hutool.db.handler.BeanListHandler;
|
||||
import cn.hutool.db.handler.EntityHandler;
|
||||
import cn.hutool.db.handler.EntityListHandler;
|
||||
import cn.hutool.db.handler.NumberHandler;
|
||||
import cn.hutool.db.handler.ResultSetUtil;
|
||||
import cn.hutool.db.handler.RsHandler;
|
||||
import cn.hutool.db.handler.StringHandler;
|
||||
import cn.hutool.db.sql.Condition;
|
||||
import cn.hutool.db.handler.*;
|
||||
import cn.hutool.db.sql.*;
|
||||
import cn.hutool.db.sql.Condition.LikeType;
|
||||
import cn.hutool.db.sql.LogicalOperator;
|
||||
import cn.hutool.db.sql.Query;
|
||||
import cn.hutool.db.sql.SqlBuilder;
|
||||
import cn.hutool.db.sql.SqlExecutor;
|
||||
import cn.hutool.db.sql.SqlUtil;
|
||||
import cn.hutool.db.sql.QuoteWrapper;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.io.Serializable;
|
||||
|
@@ -29,7 +29,7 @@ public class PooledDataSource extends AbstractDataSource {
|
||||
* 获得一个数据源
|
||||
*
|
||||
* @param group 数据源分组
|
||||
* @return {@link PooledDataSource}
|
||||
* @return {@code PooledDataSource}
|
||||
*/
|
||||
synchronized public static PooledDataSource getDataSource(final String group) {
|
||||
return new PooledDataSource(group);
|
||||
@@ -38,7 +38,7 @@ public class PooledDataSource extends AbstractDataSource {
|
||||
/**
|
||||
* 获得一个数据源,使用空分组
|
||||
*
|
||||
* @return {@link PooledDataSource}
|
||||
* @return {@code PooledDataSource}
|
||||
*/
|
||||
synchronized public static PooledDataSource getDataSource() {
|
||||
return new PooledDataSource();
|
||||
|
@@ -7,7 +7,7 @@ import java.sql.SQLException;
|
||||
/**
|
||||
* 结果集处理接口<br>
|
||||
* 此接口用于实现{@link ResultSet} 转换或映射为用户指定的pojo对象
|
||||
*
|
||||
* <p>
|
||||
* 默认实现有:
|
||||
* @see EntityHandler
|
||||
* @see EntityListHandler
|
||||
@@ -15,13 +15,13 @@ import java.sql.SQLException;
|
||||
* @see EntitySetHandler
|
||||
* @see NumberHandler
|
||||
* @see PageResultHandler
|
||||
*
|
||||
*
|
||||
* @author Luxiaolei
|
||||
*
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface RsHandler<T> extends Serializable{
|
||||
|
||||
|
||||
/**
|
||||
* 处理结果集<br>
|
||||
* 结果集处理后不需要关闭
|
||||
|
@@ -10,64 +10,177 @@ import java.util.Map;
|
||||
* @see java.sql.Types
|
||||
*/
|
||||
public enum JdbcType {
|
||||
ARRAY(java.sql.Types.ARRAY), //
|
||||
BIT(java.sql.Types.BIT), //
|
||||
TINYINT(java.sql.Types.TINYINT), //
|
||||
SMALLINT(java.sql.Types.SMALLINT), //
|
||||
INTEGER(java.sql.Types.INTEGER), //
|
||||
BIGINT(java.sql.Types.BIGINT), //
|
||||
FLOAT(java.sql.Types.FLOAT), //
|
||||
REAL(java.sql.Types.REAL), //
|
||||
DOUBLE(java.sql.Types.DOUBLE), //
|
||||
NUMERIC(java.sql.Types.NUMERIC), //
|
||||
DECIMAL(java.sql.Types.DECIMAL), //
|
||||
CHAR(java.sql.Types.CHAR), //
|
||||
VARCHAR(java.sql.Types.VARCHAR), //
|
||||
LONGVARCHAR(java.sql.Types.LONGVARCHAR), //
|
||||
DATE(java.sql.Types.DATE), //
|
||||
TIME(java.sql.Types.TIME), //
|
||||
TIMESTAMP(java.sql.Types.TIMESTAMP), //
|
||||
BINARY(java.sql.Types.BINARY), //
|
||||
VARBINARY(java.sql.Types.VARBINARY), //
|
||||
LONGVARBINARY(java.sql.Types.LONGVARBINARY), //
|
||||
NULL(java.sql.Types.NULL), //
|
||||
OTHER(java.sql.Types.OTHER), //
|
||||
BLOB(java.sql.Types.BLOB), //
|
||||
CLOB(java.sql.Types.CLOB), //
|
||||
BOOLEAN(java.sql.Types.BOOLEAN), //
|
||||
CURSOR(-10), // Oracle
|
||||
UNDEFINED(Integer.MIN_VALUE + 1000), //
|
||||
NVARCHAR(java.sql.Types.NVARCHAR), // JDK6
|
||||
NCHAR(java.sql.Types.NCHAR), // JDK6
|
||||
NCLOB(java.sql.Types.NCLOB), // JDK6
|
||||
STRUCT(java.sql.Types.STRUCT), //
|
||||
JAVA_OBJECT(java.sql.Types.JAVA_OBJECT), //
|
||||
DISTINCT(java.sql.Types.DISTINCT), //
|
||||
REF(java.sql.Types.REF), //
|
||||
DATALINK(java.sql.Types.DATALINK), //
|
||||
ROWID(java.sql.Types.ROWID), // JDK6
|
||||
LONGNVARCHAR(java.sql.Types.LONGNVARCHAR), // JDK6
|
||||
SQLXML(java.sql.Types.SQLXML), // JDK6
|
||||
DATETIMEOFFSET(-155), // SQL Server 2008
|
||||
TIME_WITH_TIMEZONE(2013), // JDBC 4.2 JDK8
|
||||
TIMESTAMP_WITH_TIMEZONE(2014); // JDBC 4.2 JDK8
|
||||
|
||||
public final int typeCode;
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param code {@link java.sql.Types} 中对应的值
|
||||
* {@link java.sql.Types#ARRAY}
|
||||
*/
|
||||
JdbcType(final int code) {
|
||||
this.typeCode = code;
|
||||
}
|
||||
ARRAY(java.sql.Types.ARRAY), //
|
||||
/**
|
||||
* {@link java.sql.Types#BIT}
|
||||
*/
|
||||
BIT(java.sql.Types.BIT), //
|
||||
/**
|
||||
* {@link java.sql.Types#TINYINT}
|
||||
*/
|
||||
TINYINT(java.sql.Types.TINYINT), //
|
||||
/**
|
||||
* {@link java.sql.Types#SMALLINT}
|
||||
*/
|
||||
SMALLINT(java.sql.Types.SMALLINT), //
|
||||
/**
|
||||
* {@link java.sql.Types#INTEGER}
|
||||
*/
|
||||
INTEGER(java.sql.Types.INTEGER), //
|
||||
/**
|
||||
* {@link java.sql.Types#BIGINT}
|
||||
*/
|
||||
BIGINT(java.sql.Types.BIGINT), //
|
||||
/**
|
||||
* {@link java.sql.Types#FLOAT}
|
||||
*/
|
||||
FLOAT(java.sql.Types.FLOAT), //
|
||||
/**
|
||||
* {@link java.sql.Types#REAL}
|
||||
*/
|
||||
REAL(java.sql.Types.REAL), //
|
||||
/**
|
||||
* {@link java.sql.Types#DOUBLE}
|
||||
*/
|
||||
DOUBLE(java.sql.Types.DOUBLE), //
|
||||
/**
|
||||
* {@link java.sql.Types#NUMERIC}
|
||||
*/
|
||||
NUMERIC(java.sql.Types.NUMERIC), //
|
||||
/**
|
||||
* {@link java.sql.Types#DECIMAL}
|
||||
*/
|
||||
DECIMAL(java.sql.Types.DECIMAL), //
|
||||
/**
|
||||
* {@link java.sql.Types#CHAR}
|
||||
*/
|
||||
CHAR(java.sql.Types.CHAR), //
|
||||
/**
|
||||
* {@link java.sql.Types#VARCHAR}
|
||||
*/
|
||||
VARCHAR(java.sql.Types.VARCHAR), //
|
||||
/**
|
||||
* {@link java.sql.Types#LONGVARCHAR}
|
||||
*/
|
||||
LONGVARCHAR(java.sql.Types.LONGVARCHAR), //
|
||||
/**
|
||||
* {@link java.sql.Types#DATE}
|
||||
*/
|
||||
DATE(java.sql.Types.DATE), //
|
||||
/**
|
||||
* {@link java.sql.Types#TIME}
|
||||
*/
|
||||
TIME(java.sql.Types.TIME), //
|
||||
/**
|
||||
* {@link java.sql.Types#TIMESTAMP}
|
||||
*/
|
||||
TIMESTAMP(java.sql.Types.TIMESTAMP), //
|
||||
/**
|
||||
* {@link java.sql.Types#BINARY}
|
||||
*/
|
||||
BINARY(java.sql.Types.BINARY), //
|
||||
/**
|
||||
* {@link java.sql.Types#VARBINARY}
|
||||
*/
|
||||
VARBINARY(java.sql.Types.VARBINARY), //
|
||||
/**
|
||||
* {@link java.sql.Types#LONGVARBINARY}
|
||||
*/
|
||||
LONGVARBINARY(java.sql.Types.LONGVARBINARY), //
|
||||
/**
|
||||
* {@link java.sql.Types#NULL}
|
||||
*/
|
||||
NULL(java.sql.Types.NULL), //
|
||||
/**
|
||||
* {@link java.sql.Types#OTHER}
|
||||
*/
|
||||
OTHER(java.sql.Types.OTHER), //
|
||||
/**
|
||||
* {@link java.sql.Types#BLOB}
|
||||
*/
|
||||
BLOB(java.sql.Types.BLOB), //
|
||||
/**
|
||||
* {@link java.sql.Types#CLOB}
|
||||
*/
|
||||
CLOB(java.sql.Types.CLOB), //
|
||||
/**
|
||||
* {@link java.sql.Types#BOOLEAN}
|
||||
*/
|
||||
BOOLEAN(java.sql.Types.BOOLEAN), //
|
||||
/**
|
||||
* Oracle Cursor
|
||||
*/
|
||||
CURSOR(-10), // Oracle
|
||||
/**
|
||||
* UNDEFINED
|
||||
*/
|
||||
UNDEFINED(Integer.MIN_VALUE + 1000), //
|
||||
/**
|
||||
* {@link java.sql.Types#NVARCHAR}
|
||||
*/
|
||||
NVARCHAR(java.sql.Types.NVARCHAR), // JDK6
|
||||
/**
|
||||
* {@link java.sql.Types#NCHAR}
|
||||
*/
|
||||
NCHAR(java.sql.Types.NCHAR), // JDK6
|
||||
/**
|
||||
* {@link java.sql.Types#NCLOB}
|
||||
*/
|
||||
NCLOB(java.sql.Types.NCLOB), // JDK6
|
||||
/**
|
||||
* {@link java.sql.Types#STRUCT}
|
||||
*/
|
||||
STRUCT(java.sql.Types.STRUCT),
|
||||
/**
|
||||
* {@link java.sql.Types#JAVA_OBJECT}
|
||||
*/
|
||||
JAVA_OBJECT(java.sql.Types.JAVA_OBJECT),
|
||||
/**
|
||||
* {@link java.sql.Types#DISTINCT}
|
||||
*/
|
||||
DISTINCT(java.sql.Types.DISTINCT),
|
||||
/**
|
||||
* {@link java.sql.Types#REF}
|
||||
*/
|
||||
REF(java.sql.Types.REF),
|
||||
/**
|
||||
* {@link java.sql.Types#BOOLEAN}
|
||||
*/
|
||||
DATALINK(java.sql.Types.DATALINK), //
|
||||
/**
|
||||
* {@link java.sql.Types#ROWID}
|
||||
*/
|
||||
ROWID(java.sql.Types.ROWID), // JDK6
|
||||
/**
|
||||
* {@link java.sql.Types#LONGNVARCHAR}
|
||||
*/
|
||||
LONGNVARCHAR(java.sql.Types.LONGNVARCHAR), // JDK6
|
||||
/**
|
||||
* {@link java.sql.Types#SQLXML}
|
||||
*/
|
||||
SQLXML(java.sql.Types.SQLXML), // JDK6
|
||||
/**
|
||||
* SQL Server 2008 DateTimeOffset
|
||||
*/
|
||||
DATETIMEOFFSET(-155), // SQL Server 2008
|
||||
/**
|
||||
* Time With TimeZone
|
||||
*/
|
||||
TIME_WITH_TIMEZONE(2013), // JDBC 4.2 JDK8
|
||||
/**
|
||||
* TimeStamp With TimeZone
|
||||
*/
|
||||
TIMESTAMP_WITH_TIMEZONE(2014); // JDBC 4.2 JDK8
|
||||
|
||||
// 此处无写操作,使用HashMap没有线程安全问题
|
||||
private static final Map<Integer, JdbcType> CODE_MAP = new HashMap<>(128, 1);
|
||||
|
||||
static {
|
||||
for (final JdbcType type : JdbcType.values()) {
|
||||
CODE_MAP.put(type.typeCode, type);
|
||||
CODE_MAP.put(type.value, type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,4 +194,23 @@ public enum JdbcType {
|
||||
return CODE_MAP.get(code);
|
||||
}
|
||||
|
||||
private final int value;
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param code {@link java.sql.Types} 中对应的值
|
||||
*/
|
||||
JdbcType(final int code) {
|
||||
this.value = code;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举值,即JDBC字段类型代码
|
||||
*
|
||||
* @return 字段类型代码
|
||||
*/
|
||||
public int getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
|
@@ -67,97 +67,215 @@ public class ResultColumn {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否自增
|
||||
*
|
||||
* @return 是否自增
|
||||
*/
|
||||
public boolean isAutoIncrement() {
|
||||
return autoIncrement;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否大小写敏感
|
||||
*
|
||||
* @return 是否大小写敏感
|
||||
*/
|
||||
public boolean isCaseSensitive() {
|
||||
return caseSensitive;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否可搜索
|
||||
*
|
||||
* @return 是否可搜索
|
||||
*/
|
||||
public boolean isSearchable() {
|
||||
return searchable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否为货币
|
||||
*
|
||||
* @return 是否为货币
|
||||
*/
|
||||
public boolean isCurrency() {
|
||||
return currency;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取null值选项,即是否可以为{@code null}
|
||||
*
|
||||
* @return null值选项,是否可以为{@code null}
|
||||
*/
|
||||
public int getNullable() {
|
||||
return nullable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取列null值选项枚举,即是否可以为{@code null}
|
||||
*
|
||||
* @return 列null值选项枚举,即是否可以为{@code null}
|
||||
*/
|
||||
public ColumnNullable getNullableEnum() {
|
||||
return ColumnNullable.of(getNullable());
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否为带正负号的数字
|
||||
*
|
||||
* @return 是否为带正负号的数字
|
||||
*/
|
||||
public boolean isSigned() {
|
||||
return signed;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取正常最大宽度(以字符数计)
|
||||
*
|
||||
* @return 正常最大宽度
|
||||
*/
|
||||
public int getDisplaySize() {
|
||||
return displaySize;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取列标签
|
||||
*
|
||||
* @return 标签
|
||||
*/
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取列名称
|
||||
*
|
||||
* @return 列名称
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取表架构名称
|
||||
*
|
||||
* @return 表架构名称
|
||||
*/
|
||||
public String getSchemaName() {
|
||||
return schemaName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取小数位数
|
||||
*
|
||||
* @return 小数位数
|
||||
*/
|
||||
public int getPrecision() {
|
||||
return precision;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小数点右侧的位数
|
||||
*
|
||||
* @return 小数点右侧的位数
|
||||
*/
|
||||
public int getScale() {
|
||||
return scale;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取表名
|
||||
*
|
||||
* @return 表名
|
||||
*/
|
||||
public String getTableName() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取表的目录名称
|
||||
*
|
||||
* @return 表的目录名称
|
||||
*/
|
||||
public String getCatalogName() {
|
||||
return catalogName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取SQL类型
|
||||
*
|
||||
* @return SQL类型
|
||||
*/
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取类型名称
|
||||
*
|
||||
* @return 类型名称
|
||||
*/
|
||||
public String getTypeName() {
|
||||
return typeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否只读(不可写入)
|
||||
*
|
||||
* @return 是否只读(不可写入)
|
||||
*/
|
||||
public boolean isReadOnly() {
|
||||
return readOnly;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否能够成功在指定列上写入
|
||||
*
|
||||
* @return 是否能够成功在指定列上写入
|
||||
*/
|
||||
public boolean isWritable() {
|
||||
return writable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入操作是否将一定成功
|
||||
*
|
||||
* @return 写入操作是否将一定成功
|
||||
*/
|
||||
public boolean isDefinitelyWritable() {
|
||||
return definitelyWritable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果调用getObject方法来从列中检索值,则返回生成其实例的 Java 类的完全限定名称
|
||||
*
|
||||
* @return 包含类的完全限定名称
|
||||
*/
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
/**
|
||||
* 列null值选项
|
||||
*/
|
||||
public enum ColumnNullable {
|
||||
/**
|
||||
* 列不允许有null
|
||||
*/
|
||||
NO_NULLS(ResultSetMetaData.columnNoNulls),
|
||||
/**
|
||||
* 列允许有null
|
||||
*/
|
||||
NULLABLE(ResultSetMetaData.columnNullable),
|
||||
/**
|
||||
* 未知
|
||||
*/
|
||||
UNKNOWN(ResultSetMetaData.columnNullableUnknown);
|
||||
|
||||
/**
|
||||
* ResultSetMetaData中的int值转枚举
|
||||
*
|
||||
* @param nullable nullable值
|
||||
* @return ColumnNullable
|
||||
*/
|
||||
@@ -173,8 +291,18 @@ public class ResultColumn {
|
||||
}
|
||||
|
||||
final int value;
|
||||
|
||||
ColumnNullable(final int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举值,即列null值选项代码
|
||||
*
|
||||
* @return 列null值选项代码
|
||||
*/
|
||||
public int getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user