use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.
the class InitDb method silenceDestroy.
private void silenceDestroy() {
DbConfig.getInstance().close();
try {
DSFactory dsFactory = GlobalDSFactory.get();
GlobalDSFactory.set(null);
dsFactory.destroy();
Console.log("h2 db destroy");
} catch (Throwable throwable) {
System.err.println(throwable.getMessage());
}
}
use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.
the class H2ToolTest method initDataSource.
/**
* 初始化数据源
*
* @return
*/
private DataSource initDataSource(String url, String user, String pass) {
// 数据源配置
Setting setting = new Setting();
setting.set("url", url);
setting.set("user", user);
setting.set("pass", pass);
// 配置连接池大小
setting.set("maxActive", "50");
setting.set("initialSize", "1");
setting.set("maxWait", "10");
setting.set("minIdle", "1");
// show sql
setting.set(SqlLog.KEY_SHOW_SQL, "true");
setting.set(SqlLog.KEY_SQL_LEVEL, "DEBUG");
setting.set(SqlLog.KEY_SHOW_PARAMS, "true");
Console.log("start load h2 db");
// 创建连接
DSFactory dsFactory = DSFactory.create(setting);
return dsFactory.getDataSource();
}
use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.
the class InitDb method init.
@PreLoadMethod(value = Integer.MIN_VALUE)
private static void init() {
//
DbConfig instance = DbConfig.getInstance();
ServerExtConfigBean serverExtConfigBean = ServerExtConfigBean.getInstance();
DbExtConfig dbExtConfig = SpringUtil.getBean(DbExtConfig.class);
//
Setting setting = new Setting();
String dbUrl = instance.getDbUrl();
setting.set("url", dbUrl);
setting.set("user", dbExtConfig.getUserName());
setting.set("pass", dbExtConfig.getUserPwd());
// 配置连接池大小
setting.set("maxActive", dbExtConfig.getMaxActive() + "");
setting.set("initialSize", dbExtConfig.getInitialSize() + "");
setting.set("maxWait", dbExtConfig.getMaxWait() + "");
setting.set("minIdle", dbExtConfig.getMinIdle() + "");
// 调试模式显示sql 信息
if (dbExtConfig.getShowSql()) {
setting.set(SqlLog.KEY_SHOW_SQL, "true");
/*
@author Hotstrip
sql log only show when it's needed,
if you want to check init sql,
set the [sqlLevel] from [DEBUG] to [INFO]
*/
setting.set(SqlLog.KEY_SQL_LEVEL, "DEBUG");
setting.set(SqlLog.KEY_SHOW_PARAMS, "true");
}
Console.log("start load h2 db");
String sqlFileNow = StrUtil.EMPTY;
try {
// 创建连接
DSFactory dsFactory = DSFactory.create(setting);
// 先执行恢复数据
instance.executeRecoverDbSql(dsFactory);
/*
@author Hotstrip
add another sql init file, if there are more sql file,
please add it with same way
*/
PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = pathMatchingResourcePatternResolver.getResources("classpath:/sql/*.sql");
// 加载 sql 变更记录,避免重复执行
Set<String> executeSqlLog = instance.loadExecuteSqlLog();
// 过滤 temp sql
List<Resource> resourcesList = Arrays.stream(resources).sorted((o1, o2) -> StrUtil.compare(o1.getFilename(), o2.getFilename(), true)).filter(resource -> !StrUtil.containsIgnoreCase(resource.getFilename(), "temp")).collect(Collectors.toList());
// 遍历
for (Resource resource : resourcesList) {
try (InputStream inputStream = resource.getInputStream()) {
String sql = IoUtil.read(inputStream, CharsetUtil.CHARSET_UTF_8);
String sha1 = SecureUtil.sha1(sql);
if (executeSqlLog.contains(sha1)) {
// 已经执行过啦,不再执行
continue;
}
sqlFileNow = resource.getFilename();
int rows = Db.use(dsFactory.getDataSource()).execute(sql);
DefaultSystemLog.getLog().info("exec init SQL file: {} complete, and affected rows is: {}", sqlFileNow, rows);
executeSqlLog.add(sha1);
} catch (IOException ignored) {
}
}
instance.saveExecuteSqlLog(executeSqlLog);
GlobalDSFactory.set(dsFactory);
//
} catch (Exception e) {
DefaultSystemLog.getLog().error("初始化数据库失败 {}", sqlFileNow, e);
System.exit(0);
return;
}
instance.initOk();
// json load to db
InitDb.loadJsonToDb();
Console.log("h2 db Successfully loaded, url is 【{}】", dbUrl);
if (JpomManifest.getInstance().isDebug()) {
//
} else {
if (serverExtConfigBean.isH2ConsoleEnabled() && StrUtil.equals(dbExtConfig.getUserName(), DbConfig.DEFAULT_USER_OR_AUTHORIZATION) && StrUtil.equals(dbExtConfig.getUserPwd(), DbConfig.DEFAULT_USER_OR_AUTHORIZATION)) {
Console.error("【安全警告】数据库账号密码使用默认的情况下不建议开启 h2 数据 web 控制台");
System.exit(-2);
}
}
}
use of cn.hutool.db.ds.DSFactory in project Jpom by dromara.
the class LoadBuildJsonToDB method insertToDB.
/**
* exec insert SQL to DB
*
* @param sql SQL for insert
*/
private void insertToDB(String sql) {
DSFactory dsFactory = GlobalDSFactory.get();
int rows = 0;
try {
rows = Db.use(dsFactory.getDataSource()).execute(sql);
} catch (SQLException e) {
DefaultSystemLog.getLog().warn("exec SQL: {} failed", sql, e);
}
DefaultSystemLog.getLog().info("exec SQL: {} complete, and affected rows is: {}", sql, rows);
}
Aggregations