通过JDBC连接池连接DRDS 本章节主要介绍了如何通过JDBC连接池与DRDS对接,实现数据操作。 应用连接池选择 连接资源是数据库中非常宝贵及有限的资源,应用并发量很大时,如果没有连接池,会占用大量的数据库的连接,导致后端数据库连接不足,无法正常提供服务,我们建议应用使用连接池来完成连接工作。在java中,推荐HikariCP作为应用连接池。 JDBC约束 不支持 rewriteBatchedStatementstrue 参数设置(默认为 false)。 BLOB, BINARY, VARBINARY 字段不能使用 setBlob() 或 setBinaryStream() 方法设置参数 。 操作步骤 1. 在控制台创建表并配置分片规则,参考建表DDL如下。 json create table if not exists enumtable( id int not null, code int not null, content varchar(250) not null, primary key(id) )engineinnodb charsetutf8; 2. 配置依赖。 json com.zaxxer HikariCP 4.0.3 3. 配置JDBC连接池参数。 yaml > 4. 连接DRDS实例执行相关sql。 json import com.zaxxer.hikari.HikariDataSource; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCTest { public static void main(String[] args) throws SQLException { ApplicationContext app new ClassPathXmlApplicationContext("application.xml"); HikariDataSource dataSource (HikariDataSource) app.getBean("dataSourceHikari"); Connection conn null; try { conn dataSource.getConnection(); //开启事务 conn.setAutoCommit(false); // 插入测试数据 PreparedStatement ps1 conn.prepareStatement("insert into enumtable (id,code,content) values (?,?,?);"); ps1.setInt(1, 1); ps1.setInt(2, 1001); ps1.setString(3, "测试数据"); ps1.executeUpdate(); conn.commit (); //查询条件带上分片键或切片索引键,否则语句将广播执行 PreparedStatement ps2 conn.prepareStatement("SELECT FROM enumtable WHERE id ?"); ps2.setInt(1, 1); ResultSet rs ps2.executeQuery(); rs.next(); String space ""; for (int i 1; i < rs.getMetaData().getColumnCount(); i++) { System.out.print(space + rs.getMetaData().getColumnName(i) + " " + rs.getString(i)); space ", "; } } catch (Exception e) { e.printStackTrace(); } finally { if (conn ! null) { conn.close(); } } } }