更新时间: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)参数。

操作步骤

  1. 配置maven。
    • java 8:
      
          com.zaxxer
          hikaricp
          3.3.1
      
    • java 7:
      
          com.zaxxer
          hikaricp-java7
          2.4.13
      
  2. 创建表。
    表1 创建表。

    表名

    字段

    类型

    是否主键

    account

    account_number

    bigint

    account_type

    varchar(45)

    account_name

    varchar(50)

  3. 连接ddm实例。
    1. 配置连接数:jdbcurl连接串中的参数和hikaricp参数。
    2. 插入数据。
    示例:
    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(); 
            } 
        } 
    }
分享:
网站地图