mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add query method
This commit is contained in:
parent
33c3d12cbb
commit
cc74ae34a2
@ -18,6 +18,8 @@
|
|||||||
* 【core 】 QrCodeUtil增加背景透明支持(pr#89@Gitee)
|
* 【core 】 QrCodeUtil增加背景透明支持(pr#89@Gitee)
|
||||||
* 【core 】 增加农历ChineseDate(pr#90@Gitee)
|
* 【core 】 增加农历ChineseDate(pr#90@Gitee)
|
||||||
* 【core 】 ZipUtil增加zip方法写出到流(issue#I17SCT@Gitee)
|
* 【core 】 ZipUtil增加zip方法写出到流(issue#I17SCT@Gitee)
|
||||||
|
* 【db 】 Db.use().query的方法中增加Map参数接口(issue#709@Github)
|
||||||
|
* 【db 】 getDialect使用数据源作为锁(issue#720@Github)
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
* 【core 】 修复NumberUtil.mul中null的结果错误问题(issue#I17Y4J@Gitee)
|
* 【core 】 修复NumberUtil.mul中null的结果错误问题(issue#I17Y4J@Gitee)
|
||||||
|
@ -45,6 +45,7 @@ public class AsymmetricCrypto extends AbstractAsymmetricCrypto<AsymmetricCrypto>
|
|||||||
*
|
*
|
||||||
* @param algorithm {@link SymmetricAlgorithm}
|
* @param algorithm {@link SymmetricAlgorithm}
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("RedundantCast")
|
||||||
public AsymmetricCrypto(AsymmetricAlgorithm algorithm) {
|
public AsymmetricCrypto(AsymmetricAlgorithm algorithm) {
|
||||||
this(algorithm, (byte[]) null, (byte[]) null);
|
this(algorithm, (byte[]) null, (byte[]) null);
|
||||||
}
|
}
|
||||||
@ -54,6 +55,7 @@ public class AsymmetricCrypto extends AbstractAsymmetricCrypto<AsymmetricCrypto>
|
|||||||
*
|
*
|
||||||
* @param algorithm 算法
|
* @param algorithm 算法
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("RedundantCast")
|
||||||
public AsymmetricCrypto(String algorithm) {
|
public AsymmetricCrypto(String algorithm) {
|
||||||
this(algorithm, (byte[]) null, (byte[]) null);
|
this(algorithm, (byte[]) null, (byte[]) null);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import java.sql.Connection;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
@ -154,6 +155,27 @@ public abstract class AbstractDb implements Serializable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支持占位符的查询,例如:select * from table where field1=:name1
|
||||||
|
*
|
||||||
|
* @param <T> 结果集需要处理的对象类型
|
||||||
|
* @param sql 查询语句,使用参数名占位符,例如:name
|
||||||
|
* @param rsh 结果集处理对象
|
||||||
|
* @param paramMap 参数
|
||||||
|
* @return 结果对象
|
||||||
|
* @throws SQLException SQL执行异常
|
||||||
|
* @since 5.1.1
|
||||||
|
*/
|
||||||
|
public <T> T query(String sql, RsHandler<T> rsh, Map<String, Object> paramMap) throws SQLException {
|
||||||
|
Connection conn = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
return SqlExecutor.query(conn, sql, rsh, paramMap);
|
||||||
|
} finally {
|
||||||
|
this.closeConnection(conn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行非查询语句<br>
|
* 执行非查询语句<br>
|
||||||
* 语句包括 插入、更新、删除
|
* 语句包括 插入、更新、删除
|
||||||
|
@ -55,7 +55,6 @@ public class DialectFactory {
|
|||||||
public final static String DRIVER_DM7 = "dm.jdbc.driver.DmDriver";
|
public final static String DRIVER_DM7 = "dm.jdbc.driver.DmDriver";
|
||||||
|
|
||||||
private static Map<DataSource, Dialect> dialectPool = new ConcurrentHashMap<>();
|
private static Map<DataSource, Dialect> dialectPool = new ConcurrentHashMap<>();
|
||||||
private static final Object lock = new Object();
|
|
||||||
|
|
||||||
private DialectFactory() {
|
private DialectFactory() {
|
||||||
}
|
}
|
||||||
@ -153,7 +152,9 @@ public class DialectFactory {
|
|||||||
public static Dialect getDialect(DataSource ds) {
|
public static Dialect getDialect(DataSource ds) {
|
||||||
Dialect dialect = dialectPool.get(ds);
|
Dialect dialect = dialectPool.get(ds);
|
||||||
if(null == dialect) {
|
if(null == dialect) {
|
||||||
synchronized (lock) {
|
// 数据源作为锁的意义在于:不同数据源不会导致阻塞,相同数据源获取方言时可保证互斥
|
||||||
|
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||||
|
synchronized (ds) {
|
||||||
dialect = dialectPool.get(ds);
|
dialect = dialectPool.get(ds);
|
||||||
if(null == dialect) {
|
if(null == dialect) {
|
||||||
dialect = newDialect(ds);
|
dialect = newDialect(ds);
|
||||||
|
@ -220,7 +220,7 @@ public class SqlExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行查询语句<br>
|
* 执行查询语句,例如:select * from table where field1=:name1 <br>
|
||||||
* 此方法不会关闭Connection
|
* 此方法不会关闭Connection
|
||||||
*
|
*
|
||||||
* @param <T> 处理结果类型
|
* @param <T> 处理结果类型
|
||||||
|
Loading…
x
Reference in New Issue
Block a user