mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
add setFetchSize and FetchDirection
This commit is contained in:
@@ -16,9 +16,11 @@
|
||||
|
||||
package cn.hutool.v7.db.config;
|
||||
|
||||
import cn.hutool.v7.db.Db;
|
||||
import cn.hutool.v7.db.dialect.Dialect;
|
||||
import cn.hutool.v7.db.driver.DriverUtil;
|
||||
import cn.hutool.v7.db.ds.DSFactory;
|
||||
import cn.hutool.v7.db.sql.FetchDirection;
|
||||
import cn.hutool.v7.db.sql.filter.SqlFilter;
|
||||
import cn.hutool.v7.db.sql.filter.SqlFilterChain;
|
||||
|
||||
@@ -80,6 +82,15 @@ public class DbConfig extends ConnectionConfig<DbConfig> {
|
||||
*/
|
||||
private Dialect dialect;
|
||||
|
||||
/**
|
||||
* 结果集的一次取出数据的数量,0或null表示默认值
|
||||
*/
|
||||
private Integer fetchSize;
|
||||
/**
|
||||
* 结果集的游标方向
|
||||
*/
|
||||
private FetchDirection fetchDirection;
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*/
|
||||
@@ -169,4 +180,41 @@ public class DbConfig extends ConnectionConfig<DbConfig> {
|
||||
this.dialect = dialect;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取一次取出数据的数量,0或null表示默认值
|
||||
* @return 一次取出数据的数量,0或null表示默认值
|
||||
*/
|
||||
public Integer getFetchSize() {
|
||||
return fetchSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置一次取出数据的数量,0或null表示默认值
|
||||
* @param fetchSize 一次取出数据的数量,0或null表示默认值
|
||||
* @return this
|
||||
*/
|
||||
public DbConfig setFetchSize(final Integer fetchSize) {
|
||||
this.fetchSize = fetchSize;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结果集的游标方向
|
||||
* @return 结果集的游标方向
|
||||
*/
|
||||
public FetchDirection getFetchDirection() {
|
||||
return fetchDirection;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置结果集的游标方向
|
||||
* @param fetchDirection 结果集的游标方向
|
||||
* @return this
|
||||
*/
|
||||
public DbConfig setFetchDirection(final FetchDirection fetchDirection) {
|
||||
this.fetchDirection = fetchDirection;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ import cn.hutool.v7.db.dialect.DialectName;
|
||||
import cn.hutool.v7.db.sql.QuoteWrapper;
|
||||
import cn.hutool.v7.db.sql.SqlBuilder;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
|
||||
@@ -34,6 +35,7 @@ import java.sql.PreparedStatement;
|
||||
* @author loolly
|
||||
*/
|
||||
public class MysqlDialect extends AnsiSqlDialect {
|
||||
@Serial
|
||||
private static final long serialVersionUID = -3734718212043823636L;
|
||||
|
||||
/**
|
||||
@@ -81,7 +83,7 @@ public class MysqlDialect extends AnsiSqlDialect {
|
||||
// 构建字段部分和参数占位符部分
|
||||
entity.forEach((field, value) -> {
|
||||
if (StrUtil.isNotBlank(field)) {
|
||||
if (fieldsPart.length() > 0) {
|
||||
if (!fieldsPart.isEmpty()) {
|
||||
// 非第一个参数,追加逗号
|
||||
fieldsPart.append(", ");
|
||||
placeHolder.append(", ");
|
||||
|
@@ -24,6 +24,7 @@ import org.stone.beecp.BeeDataSource;
|
||||
import org.stone.beecp.BeeDataSourceConfig;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.io.Serial;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
@@ -32,6 +33,7 @@ import java.util.Properties;
|
||||
* @author Looly
|
||||
*/
|
||||
public class BeeDSFactory extends AbstractDSFactory {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
|
@@ -0,0 +1,43 @@
|
||||
package cn.hutool.v7.db.sql;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
|
||||
/**
|
||||
* 获取结果集的移动方向
|
||||
*
|
||||
* @author looly
|
||||
* @since 7.0.0
|
||||
*/
|
||||
public enum FetchDirection {
|
||||
|
||||
/**
|
||||
* 默认方向
|
||||
*/
|
||||
FORWARD(ResultSet.FETCH_FORWARD),
|
||||
/**
|
||||
* 反向
|
||||
*/
|
||||
REVERSE(ResultSet.FETCH_REVERSE),
|
||||
/**
|
||||
* 不确定方向
|
||||
*/
|
||||
UNKNOWN(ResultSet.FETCH_UNKNOWN);
|
||||
|
||||
/**
|
||||
* 获取值
|
||||
*/
|
||||
private final int value;
|
||||
|
||||
FetchDirection(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值
|
||||
*
|
||||
* @return 值
|
||||
*/
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
@@ -28,6 +28,7 @@ import cn.hutool.v7.db.DbException;
|
||||
import cn.hutool.v7.db.Entity;
|
||||
import cn.hutool.v7.db.sql.filter.SqlFilter;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.sql.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -41,6 +42,7 @@ import java.util.Set;
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public class StatementBuilder implements Builder<StatementWrapper> {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
@@ -163,8 +165,7 @@ public class StatementBuilder implements Builder<StatementWrapper> {
|
||||
}
|
||||
if (ArrayUtil.isArray(params)) {
|
||||
ps.fillParams(new ArrayIter<>(params), nullTypeMap);
|
||||
} else if (params instanceof Entity) {
|
||||
final Entity entity = (Entity) params;
|
||||
} else if (params instanceof Entity entity) {
|
||||
// 对于多Entity批量插入的情况,为防止数据不对齐,故按照首行提供键值对筛选。
|
||||
if(null == keys){
|
||||
keys = entity.keySet();
|
||||
|
@@ -51,13 +51,28 @@ public class StatementUtil {
|
||||
* @since 5.8.19
|
||||
*/
|
||||
public static PreparedStatement prepareStatement(final boolean returnGeneratedKey, final DbConfig config, final Connection conn, final String sql, final Object... params) {
|
||||
return StatementBuilder.of()
|
||||
PreparedStatement statement = StatementBuilder.of()
|
||||
.setConnection(conn)
|
||||
.setReturnGeneratedKey(returnGeneratedKey)
|
||||
.setSqlFilter(Opt.ofNullable(config).map(DbConfig::getSqlFilters).getOrNull())
|
||||
.setSql(sql)
|
||||
.setParams(params)
|
||||
.build();
|
||||
|
||||
try{
|
||||
final Integer fetchSize = config.getFetchSize();
|
||||
if (null != fetchSize) {
|
||||
statement.setFetchSize(fetchSize);
|
||||
}
|
||||
final FetchDirection fetchDirection = config.getFetchDirection();
|
||||
if (null != fetchDirection) {
|
||||
statement.setFetchDirection(fetchDirection.getValue());
|
||||
}
|
||||
} catch (SQLException e){
|
||||
throw new DbException(e);
|
||||
}
|
||||
|
||||
return statement;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -22,6 +22,10 @@ module hutool.db {
|
||||
|
||||
exports cn.hutool.v7.db;
|
||||
exports cn.hutool.v7.db.config;
|
||||
exports cn.hutool.v7.db.handler;
|
||||
exports cn.hutool.v7.db.dialect;
|
||||
exports cn.hutool.v7.db.sql;
|
||||
exports cn.hutool.v7.db.sql.filter;
|
||||
exports cn.hutool.v7.db.ds;
|
||||
exports cn.hutool.v7.db.ds.bee;
|
||||
exports cn.hutool.v7.db.ds.c3p0;
|
||||
|
Reference in New Issue
Block a user