Chris2018998 / beecp

A small JDBC Connection pool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hikari换成BeeCP报错(beetlsql)

wyw19902006 opened this issue · comments

import cn.hutool.setting.dialect.Props;
import com.zaxxer.hikari.HikariDataSource;
import org.beetl.sql.core.*;
import org.beetl.sql.core.db.MySqlStyle;
import org.beetl.sql.gen.SourceBuilder;
import org.beetl.sql.gen.SourceConfig;
import org.beetl.sql.gen.simple.EntitySourceBuilder;
import org.beetl.sql.gen.simple.MDSourceBuilder;
import org.beetl.sql.gen.simple.MapperSourceBuilder;
import org.beetl.sql.gen.simple.SimpleMavenProject;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

public class MysqlGenerator {
public static void main(String[] args) {
SQLManager sqlManager = createSQLManager();
SourceConfig config = new SourceConfig(sqlManager, createSourceBuilder());
config.setPreferDoubleType(SourceConfig.PreferDoubleType.BigDecimal);
config.setPreferDateType(SourceConfig.PreferDateType.LocalDate);
SimpleMavenProject mavenProject = createBaseProject();
config.genAll(mavenProject);
}

public static SQLManager createSQLManager() {
    AtomicReference<Props> props = new AtomicReference<>(new Props("application.properties"));
    HikariDataSource ds = new HikariDataSource();
    ds.setJdbcUrl(props.get().getProperty("spring.datasource.url"));
    ds.setUsername(props.get().getProperty("spring.datasource.username"));
    ds.setPassword(props.get().getProperty("spring.datasource.password"));
    ds.setDriverClassName(props.get().getProperty("spring.datasource.driver-class-name"));
    ds.setAutoCommit(props.get().getBool("spring.datasource.hikari.auto-commit", true));
    ds.setConnectionTimeout(props.get().getLong("spring.datasource.hikari.connection-timeout", 30000L));
    ds.setIdleTimeout(props.get().getLong("spring.datasource.hikari.idle-timeout", 600000L));
    ds.setMaxLifetime(props.get().getLong("spring.datasource.hikari.max-lifetime", 1800000L));
    ds.setConnectionTestQuery(props.get().getProperty("spring.datasource.hikari.connection-test-query"));
    ds.setMinimumIdle(props.get().getInt("spring.datasource.hikari.minimum-idle", 10));
    ds.setMaximumPoolSize(props.get().getInt("spring.datasource.hikari.maximum-pool-size", 100));
    ds.setPoolName(props.get().getProperty("spring.datasource.hikari.pool-name"));
    ds.setReadOnly(props.get().getBool("spring.datasource.hikari.read-only", false));
    ConnectionSource connectionSource = ConnectionSourceHelper.getSingle(ds);
    String sqlPath = props.get().getProperty("beetlsql.sqlManager1.sqlPath");
    String charset = props.get().getProperty("beetlsql.sqlManager1.sqlFileCharset");
    SQLManagerBuilder sqlManagerBuilder = SQLManager.newBuilder(connectionSource)
            .setDbStyle(new MySqlStyle())
            .setNc(new UnderlinedNameConversion())
            .setSqlLoader(sqlPath, charset);
    return sqlManagerBuilder.build();
}

public static SimpleMavenProject createBaseProject() {
    AtomicReference<Props> props = new AtomicReference<>(new Props("application.properties"));
    String basePackage = props.get().getProperty("beetlsql.sqlManager1.basePackage");
    SimpleMavenProject project = new SimpleMavenProject();
    project.setBasePackage(basePackage);
    return project;
}

public static List<SourceBuilder> createSourceBuilder() {
    List<SourceBuilder> sourceBuilder = new ArrayList<>();
    SourceBuilder entityBuilder = new EntitySourceBuilder();
    SourceBuilder mapperBuilder = new MapperSourceBuilder();
    SourceBuilder mdBuilder = new MDSourceBuilder();
    sourceBuilder.add(entityBuilder);
    sourceBuilder.add(mapperBuilder);
    sourceBuilder.add(mdBuilder);
    return sourceBuilder;
}

}
原先的代码如下,将Hikari换成BeeCP后报错内容如下:
Exception in thread "main" java.lang.NullPointerException
at cn.beecp.pool.ProxyResultSetBase.close(ProxyResultSetBase.java:73)
at org.beetl.sql.core.meta.SchemaMetadataManager.initMetadata(SchemaMetadataManager.java:257)
at org.beetl.sql.core.meta.SchemaMetadataManager.allTable(SchemaMetadataManager.java:96)
at org.beetl.sql.gen.SourceConfig.genAll(SourceConfig.java:176)
at org.beetl.sql.gen.SourceConfig.genAll(SourceConfig.java:194)
at com.msj.beetlsqldemo.util.MysqlGenerator.main(MysqlGenerator.java:26)

版本:3.1.5(1.6.9不报错)

好的,马上看看

这个错误的原因是: 从DatabaseMetaData上获得Resultset是没有为Restult附加owner属性导致,因此关闭时导致异常。
目前已经修复,临时包:https://github.com/Chris2018998/BeeCP/blob/master/doc/temp/beecp-3.1.6.jar