threadLocalConnection = new ThreadLocal<>();
+
+ private final DSLoader.DSInfo dsInfo;
+
+ public static DewDB pick(String dsCode) {
+ if (!DBS.containsKey(dsCode)) {
+ synchronized (DBS) {
+ if (!DBS.containsKey(dsCode)) {
+ DBS.put(dsCode, new DewDB(DSLoader.getDSInfo(dsCode)));
+ }
+ }
+ }
+ return DBS.get(dsCode);
+ }
+
+ DewDB(DSLoader.DSInfo dsInfo) {
+ this.dsInfo = dsInfo;
+ }
+
+ public DSLoader.DSInfo getDsInfo() {
+ return dsInfo;
+ }
+
+ /**
+ * 创建表.
+ *
+ *
+ * @param tableName 表名
+ * @param tableDesc 表说明
+ * @param fields 表字段(字段名 - 类型)
+ * @param fieldsDesc 字段说明
+ * @param indexFields 索引字段
+ * @param uniqueFields 唯一值字段
+ * @param pkField 主键字段
+ * @throws SQLException SQL错误
+ * @deprecated - 此功能存在一定限制,建议使用 {@link #ddl(String)} 建表
+ */
+ @Deprecated
+ public void createTableIfNotExist(String tableName, String tableDesc,
+ Map fields,
+ Map fieldsDesc,
+ List indexFields,
+ List uniqueFields,
+ String pkField) throws SQLException {
+ tableName = tableName.toLowerCase();
+ DBExecutor.ddl(
+ dsInfo.getDialect().createTableIfNotExist(tableName, tableDesc,
+ fields, fieldsDesc, indexFields, uniqueFields, pkField),
+ getConnection(), isCloseConnection()
+ );
+ }
+
+ /**
+ * DDL操作.
+ *
+ * @param ddl DDL语句
+ * @throws SQLException SQL错误
+ */
+ public void ddl(String ddl) throws SQLException {
+ DBExecutor.ddl(ddl, getConnection(), isCloseConnection());
+ }
+
+ /**
+ * 获取单条记录.
+ *
+ * @param tableName 表名
+ * @param pkField 主键字段
+ * @param pkValue 主键值
+ * @param clazz 对象类
+ * @param 对象
+ * @return java对象
+ * @throws SQLException SQL错误
+ */
+ public E getByPk(String tableName, String pkField, Object pkValue, Class clazz) throws SQLException {
+ return get("SELECT * FROM " + tableName + " WHERE " + pkField + " = ?", clazz, pkValue);
+ }
+
+ /**
+ * 获取单个对象.
+ *
+ * @param sql SQL
+ * @param params 参数
+ * @param clazz 对象类
+ * @param 对象
+ * @return java对象
+ * @throws SQLException SQL错误
+ */
+ public E get(String sql, Class clazz, Object... params) throws SQLException {
+ return DBExecutor.get(sql, params, clazz, getConnection(), isCloseConnection());
+ }
+
+ /**
+ * 获取多个对象.
+ *
+ * @param sql SQL
+ * @param params 参数
+ * @param clazz 对象类
+ * @param 对象
+ * @return java对象
+ * @throws SQLException SQL错误
+ */
+ public List find(String sql, Class clazz, Object... params) throws SQLException {
+ return DBExecutor.find(sql, params, clazz, getConnection(), isCloseConnection());
+ }
+
+
+ /**
+ * 获取多个对象(带分页).
+ *
+ * @param sql SQL
+ * @param params 参数
+ * @param pageNumber 页码(从1开始)
+ * @param pageSize 每页条数
+ * @param clazz 对象类
+ * @param 对象
+ * @return 多个对象(带分页)
+ * @throws SQLException SQL错误
+ */
+ public Page page(String sql, long pageNumber, long pageSize, Class clazz, Object... params) throws SQLException {
+ return DBExecutor.page(sql, params, pageNumber, pageSize, clazz, getConnection(), isCloseConnection(), dsInfo.getDialect());
+ }
+
+ /**
+ * 判断记录是否存在.
+ *
+ * @param tableName 表名
+ * @param pkField 主键字段
+ * @param pkValue 主键值
+ * @return 是否存在
+ * @throws SQLException SQL错误
+ */
+ public boolean exits(String tableName, String pkField, Object pkValue) throws SQLException {
+ return get("SELECT id FROM " + tableName + " WHERE " + pkField + " = ?", new Object[]{pkValue}).size() != 0;
+ }
+
+ /**
+ * 判断记录是否存在.
+ *
+ * @param sql SQL
+ * @param params 参数
+ * @return 是否存在
+ * @throws SQLException SQL错误
+ */
+ public boolean exits(String sql, Object... params) throws SQLException {
+ return count(sql, params) != 0;
+ }
+
+ /**
+ * 获取单条记录.
+ *
+ * @param tableName 表名
+ * @param pkField 主键字段
+ * @param pkValue 主键值
+ * @return 单条记录
+ * @throws SQLException SQL错误
+ */
+ public Map getByPk(String tableName, String pkField, Object pkValue) throws SQLException {
+ return get("SELECT * FROM " + tableName + " WHERE " + pkField + " = ?", pkValue);
+ }
+
+ /**
+ * 获取单条记录.
+ *
+ * @param sql SQL
+ * @param params 参数
+ * @return 单条记录
+ * @throws SQLException SQL错误
+ */
+ public Map get(String sql, Object... params) throws SQLException {
+ return DBExecutor.get(sql, params, getConnection(), isCloseConnection());
+ }
+
+ /**
+ * 获取多条记录.
+ *
+ * @param sql SQL
+ * @param params 参数
+ * @return 多条记录(带分页)
+ * @throws SQLException SQL错误
+ */
+ public List