导图社区 hutoolDB代码分析
hutoolDB代码分析this(path, DEFAULT_CHARSET,isUseVariable);this.init(ResourceUtil.getResourceObj(path), charset, isUseVariable);
编辑于2022-11-01 14:47:22 广东图主是一名工作十多年的java程序员,历任多家大型企业,上市公司架构师,技术经理,现任某上市公司架构师,现带领兼职技术团队诚寻运营团队并提供免费运营方案,技术0成本,桃宝搜旗和科技
celia功能分析,在“仪表板”部分,列出了项目的多个关键数据点,如“总余额”、“空投余额”、“我的账户”、“挖矿余额”、“连胜余额”以及“本周排名”。这些数据让用户能够快速了解项目的财务状况和用户活动情况。“社区”和“推荐”部分侧重于项目与用户和潜在用户之间的互动。通过“推荐列表”和“邀请链接”,用户可以轻松地推广项目并吸引更多的参与者。同时,“常见问题”部分提供了关于项目的常见问题和解答,帮助用户更好地了解项目。
倪海厦-五行(金木水火土相生相克)-脏腑分析,分享金、水、木、火、土、脏、腑、心包经、三焦经 ,有兴趣的可以看看哟。
社区模板帮助中心,点此进入>>
图主是一名工作十多年的java程序员,历任多家大型企业,上市公司架构师,技术经理,现任某上市公司架构师,现带领兼职技术团队诚寻运营团队并提供免费运营方案,技术0成本,桃宝搜旗和科技
celia功能分析,在“仪表板”部分,列出了项目的多个关键数据点,如“总余额”、“空投余额”、“我的账户”、“挖矿余额”、“连胜余额”以及“本周排名”。这些数据让用户能够快速了解项目的财务状况和用户活动情况。“社区”和“推荐”部分侧重于项目与用户和潜在用户之间的互动。通过“推荐列表”和“邀请链接”,用户可以轻松地推广项目并吸引更多的参与者。同时,“常见问题”部分提供了关于项目的常见问题和解答,帮助用户更好地了解项目。
倪海厦-五行(金木水火土相生相克)-脏腑分析,分享金、水、木、火、土、脏、腑、心包经、三焦经 ,有兴趣的可以看看哟。
hutoolDB分析
用户包
private static final Db db = Db.use("test");
cn.hutool.db
Db.use("test");
use(DSFactory.get(group));
return ds == null ? null : new Db(ds);
this(ds, DialectFactory.getDialect(ds));
super(ds, dialect);
this.ds = ds;
结束
this.runner = new SqlConnRunner(dialect);
super(dialect);
this.dialect = dialect;
结束
DialectFactory.getDialect(ds)
dialect = newDialect(ds);
return newDialect(DriverUtil.identifyDriver(ds));
final Dialect dialect = internalNewDialect(driverName);
return new Sqlite3Dialect();
wrapper = new Wrapper('[', ']');
this.preWrapQuote = preWrapQuote;this.sufWrapQuote = sufWrapQuote;
结束
DriverUtil.identifyDriver(ds)
identifyDriver(conn);
identifyDriver(meta.getDriverName());
DialectFactory.identifyDriver(nameContainsProductInfo);
结束
通过JDBC URL等信息识别JDBC驱动名,比如:org.sqlite.JDBC
结束
DSFactory.get(group)
GlobalDSFactory.get()
DSFactory.create(null);
doCreate(setting);
return new HikariDSFactory(setting);
super(DS_NAME, HikariDataSource.class, setting);
super(dataSourceName);
this.dataSourceName = dataSourceName;
结束
GlobalDbConfig.createDbSetting();
自定义数据库配置文件路径(绝对路径或相对classpath路径)setting = new Setting(dbSettingPath, false);
结束
private static final String DEFAULT_DB_SETTING_PATH = "config/db.setting"new Setting(DEFAULT_DB_SETTING_PATH, true);
this(path, DEFAULT_CHARSET, isUseVariable);
this.init(ResourceUtil.getResourceObj(path), charset, isUseVariable);
return load();
new SettingLoader(this.groupedMap, this.charset, this.isUseVariable);
this.groupedMap = groupedMap;this.charset = charset;this.isUseVariable = isUseVariable;
结束
settingLoader.load(this.resource);
//加载设置文件load(settingStream);
//替换给定值中的变量标识replaceVar(group, value);
结束
ResourceUtil.getResourceObj(path)
new FileResource(path);
this(FileUtil.file(path));
this(file, null);
this.file = file;this.lastModified = file.lastModified();//如果fileName为空,用文件对象里的文件名this.name = ObjectUtil.defaultIfNull(fileName, file::getName);
结束
FileUtil.file(path)
new File(getAbsolutePath(path));
结束
getAbsolutePath(path)
getAbsolutePath(path, null);
//修复路径normalize(path);
StrUtil.removePrefixIgnoreCase(path, URLUtil.CLASSPATH_URL_PREFIX);
return str(str);
return null == cs ? null : cs.toString();
结束
startWithIgnoreCase(str, prefix)
return startWith(str, prefix, true);
//是否以指定字符串开头return startWith(str, prefix, ignoreCase, false);
结束
subSuf(str2, prefix.length());
sub(string, fromIndex, string.length());
结束
isAbsolutePath(normalPath)
结束
ResourceUtil.getResource(normalPath, baseClass);
结束
URLUtil.getDecodedPath(url)
toURI(url)
toURI(url, false);
toURI(url.toString(), isEncode);
encode(location);
encode(url, CharsetUtil.CHARSET_UTF_8);
RFC3986.PATH.encode(url, charset);
结束
getPath()
decode(path);
结束
ClassUtil.getClassPath();
getClassPath(false);
getClassPathURL();
getResourceURL(StrUtil.EMPTY);
ResourceUtil.getResource(resource);
getResource(resource, null);
结束
URLUtil.getDecodedPath(classPathURL);
结束
FileUtil.normalize(url);
结束
Objects.requireNonNull(path)
结束
new ClassPathResource(path);
this(path, null, null);
super((URL) null);
this(url, null);
结束
final String path = normalizePath(pathBaseClassLoader);
结束
FileUtil.getName(path);
return FileNameUtil.getName(filePath);
结束
getClassLoader
ClassLoaderUtil.getClassLoader();
getContextClassLoader();
Thread.currentThread().getContextClassLoader();
结束
AccessController.doPrivileged( (PrivilegedAction<ClassLoader>) () -> Thread.currentThread().getContextClassLoader());
结束
ClassLoaderUtil.class.getClassLoader();
结束
getSystemClassLoader();
ClassLoader.getSystemClassLoader();
结束
AccessController.doPrivileged( (PrivilegedAction<ClassLoader>) ClassLoader::getSystemClassLoader);
结束
initUrl();
this.clazz.getResource(this.path);
结束
this.classLoader.getResource(this.path);
结束
ClassLoader.getSystemResource(this.path);
结束
//private static final String DEFAULT_DB_SETTING_PATH2 = "db.setting"setting = new Setting(DEFAULT_DB_SETTING_PATH2, true);
结束
DbUtil.setShowSqlGlobal(setting);
setting.remove(SqlLog.KEY_SHOW_SQL)
搞到这里
setShowSqlGlobal(isShowSql, isFormatSql, isShowParams, level);
return GlobalDSFactory.get().getDataSource(group);