package UnitTest; import com.alibaba.druid.filter.stat.StatFilter; import com.dsideal.FengHuang.Plugin.SlaveDrudPlugin; import com.google.common.collect.Lists; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect; import com.jfinal.plugin.druid.DruidPlugin; import org.apache.shardingsphere.api.config.masterslave.LoadBalanceStrategyConfiguration; import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration; import java.util.HashMap; import java.util.List; import java.util.Map; public class TestReadWriteSplit2 { public static DruidPlugin createDruidPlugin(String url, String username, String password, String driverClass) { DruidPlugin druidPlugin = new DruidPlugin(url, username, password, driverClass); //最大连接池数量 druidPlugin.setMaxActive(20); //最小连接池数量 druidPlugin.setMinIdle(1); //初始化时建立物理连接的个数,默认为0 druidPlugin.setInitialSize(1); //获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 druidPlugin.setMaxWait(60000); //如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。 druidPlugin.setTimeBetweenEvictionRunsMillis(60000); //连接保持空闲而不被驱逐的最小时间 druidPlugin.setMinEvictableIdleTimeMillis(300000); //建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 druidPlugin.setTestWhileIdle(true); //申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。默认为true druidPlugin.setTestOnBorrow(false); //归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。默认为true druidPlugin.setTestOnReturn(false); //数据监控 druidPlugin.addFilter(new StatFilter()); return druidPlugin; } public static void main(String[] args) { String url = "jdbc:opengauss://10.10.14.61:15400,10.10.14.62:15400/test_db?autoBalance=roundrobin&targetServerType=master"; String driverClass = "org.opengauss.Driver"; String userName = "postgres"; String passWord = "DsideaL147258369"; DruidPlugin druidPlugin = createDruidPlugin(url, userName, passWord, driverClass); druidPlugin.start(); ActiveRecordPlugin arp = new ActiveRecordPlugin("aGroup", druidPlugin); arp.setDevMode(false); //配置数据库方言 arp.setDialect(new PostgreSqlDialect()); arp.start(); String sql = "truncate table test"; Db.update(sql); for (int i = 1; i <= 100; i++) { sql = "insert into test(id,txt) values(?,?)"; Db.update(sql, i, "黄海——" + i); } for (int i = 1; i <= 100; i++) { sql = "select * from test where id=?"; List list = Db.find(sql, i); System.out.println(list); } } }