更新时间:2023-11-06 gmt 08:00
通过jdbc连接池连接ddm-凯发k8国际娱乐官网入口
操作场景
连接池实现原理:在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,发出请求,直接从连接池中取出一个已建立的空闲连接对象。使用完毕后,再将连接放回连接池中,供下一个请求访问使用。连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过系统自身的管理机制来监视数据库连接的数量、使用情况等。
本章节主要介绍了如何通过jdbc连接池与ddm对接,实现数据操作。如果是java程序,建议您使用。
- java 8:建议使用3.3.1版本。
- java 7:建议使用2.4.13版本。
- jdbc连接ddm不支持开启用户游标提取(usecursorfetch)参数。
操作步骤
- 配置maven。
- java 8:
com.zaxxer hikaricp 3.3.1 - java 7:
com.zaxxer hikaricp-java7 2.4.13
- java 8:
- 创建表。
表1 创建表。 表名
字段
类型
是否主键
account
account_number
bigint
是
account_type
varchar(45)
否
account_name
varchar(50)
否
- 连接ddm实例。
- 配置连接数:jdbcurl连接串中的参数和hikaricp参数。
- 插入数据。
示例:import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import javax.sql.datasource; import com.zaxxer.hikari.hikariconfig; import com.zaxxer.hikari.hikaridatasource; public class hikaricpdemo { private static datasource datasource; private static datasource getdatasource() { if (datasource == null) { hikariconfig config = new hikariconfig(); // 配置jdbcurl连接串中的参数 config.setjdbc; /* // 配置jdbcurl连接串中的参数也可以通过以下方法进行: config.adddatasourceproperty("loadbalanceautocommitstatementthreshold",5); config.adddatasourceproperty("loadbalancehostremovalgraceperiod", 15000); config.adddatasourceproperty("loadbalanceblacklisttimeout", 60000); config.adddatasourceproperty("loadbalancepingtimeout", 5000); config.adddatasourceproperty("retriesalldown", 10); config.adddatasourceproperty("connecttimeout", 10000); */ config.setusername("username"); config.setpassword("password"); config.setmaximumpoolsize(10); config.setautocommit(true); // 配置hikaricp参数 config.adddatasourceproperty("cacheprepstmts", true); config.adddatasourceproperty("prepstmtcachesize", 250); config.adddatasourceproperty("prepstmtcachesqllimit", 2048); config.adddatasourceproperty("minimumidle", 5); config.adddatasourceproperty("maximumpoolsize", 10); config.adddatasourceproperty("idletimeout", 30000); datasource = new hikaridatasource(config); } return datasource; } public static void main(string[] args) { connection connection = null; preparedstatement pstmt = null; resultset resultset = null; try { datasource datasource = getdatasource(); connection = datasource.getconnection(); system.out.println("the connection object is of class: " connection.getclass()); // 开启事务 connection.setautocommit(false); // 插入测试数据 string insertsql = "insert into account(account_number, account_type, account_name) values(?, ?, ?);"; preparedstatement insertstmt = connection.preparestatement(insertsql); insertstmt.setlong (1, 1l); insertstmt.setstring (2, "manager"); insertstmt.setstring (3, "demotest01"); insertstmt.executeupdate(); connection.commit (); // 查询数据 pstmt = connection.preparestatement("select * from account"); resultset = pstmt.executequery(); while (resultset.next()) { string accountnumber = resultset.getstring("account_number"); string accounttype = resultset.getstring("account_type"); string accountname = resultset.getstring("account_name"); system.out.println(accountnumber "," accounttype "," accountname); } } catch (exception e) { try { if (null != connection) { connection.rollback(); } } catch (sqlexception e1) { e1.printstacktrace(); } e.printstacktrace(); } } }
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨