package com.mlongbo.jfinal.plugin;
import com.jfinal.plugin.IPlugin;
import com.jfinal.plugin.activerecord.IDataSourceProvider;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
/**
* *
* @author malongbo
*/
public class HikariCPPlugin implements IPlugin,IDataSourceProvider {
private String jdbcUrl;
private String user;
private String password;
private String driverClass = "com.mysql.jdbc.Driver";
private int maxPoolSize = 10;
private HikariDataSource dataSource;
public HikariCPPlugin(String jdbcUrl, String user, String password) {
this.jdbcUrl = jdbcUrl;
this.user = user;
this.password = password;
}
public HikariCPPlugin(String jdbcUrl, String user, String password, String driverClass, int maxPoolSize) {
this.jdbcUrl = jdbcUrl;
this.user = user;
this.password = password;
this.driverClass = driverClass;
this.maxPoolSize = maxPoolSize;
}
@Override
public boolean start() {
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(maxPoolSize);
// config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
config.setDriverClassName(driverClass);
config.setJdbcUrl(jdbcUrl);
config.setUsername(user);
config.setPassword(password);
//防止中文乱码
config.addDataSourceProperty("useUnicode", "true");
config.addDataSourceProperty("characterEncoding", "utf8");
config.setConnectionTestQuery("SELECT 1");
this.dataSource = new HikariDataSource(config);
return true;
}
@Override
public boolean stop() {
if (dataSource != null)
dataSource.close();
return true;
}
@Override
public DataSource getDataSource() {
return this.dataSource;
}
}