日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于Java連接池Druid的應(yīng)用開發(fā)

本文介紹基于JDBC連接池Druid連接并訪問Lindorm寬表引擎的使用方法。

前提條件

  • 已安裝Java環(huán)境,要求安裝JDK 1.8及以上版本。

  • 已配置白名單,具體操作,請參見設(shè)置白名單

  • 寬表引擎的版本為2.3.1及以上版本,如何升級版本,請參見升級小版本

準(zhǔn)備工作

  • 通過連接池Druid連接Lindorm寬表引擎前,需要安裝連接池Druid和Lindorm JDBC Driver。以Maven項目為例,在pom.xml文件的dependencies中添加以下依賴項。

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.11</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun.lindorm</groupId>
      <artifactId>lindorm-all-client</artifactId>
      <version>2.2.1.3</version>
    </dependency>
  • 當(dāng)通過druid-spring-boot-starter使用Druid連接池時,需要先排除druid-spring-boot-starter依賴的Druid組件,然后顯式依賴Druid組件,如下所示。

    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.2.11</version>
       <exclusions>
          <exclusion>
             <groupId>com.alibaba</groupId>
             <artifactId>druid</artifactId>
          </exclusion>
       </exclusions>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.11</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun.lindorm</groupId>
      <artifactId>lindorm-all-client</artifactId>
      <version>2.2.1.3</version>
    </dependency>

操作步驟

說明

您可以直接下載示例代碼在本地編譯和運行,也可以使用示例代碼開發(fā)您的項目代碼。

  1. 配置連接池Druid的參數(shù)。在Maven項目的src/main/resources目錄中新建druid.properties文件,并在文件中添加以下內(nèi)容。

    # 驅(qū)動類名,無需替換
    driverClassName=com.aliyun.lindorm.table.client.Driver
    # url、username、password需要替換為業(yè)務(wù)實際的內(nèi)容,可以在Lindorm控制臺上獲取
    url=jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****.lindorm.rds.aliyuncs.com:30060
    username=****
    password=****
    # 連接屬性,指定要連接的database,需根據(jù)實際情況將****替換為實際的內(nèi)容
    connectionProperties=database=****
    
    # 初始化連接池即創(chuàng)建連接,建議保持不變
    init=true
    # 初始化連接池時建立連接的個數(shù),可以根據(jù)實際情況調(diào)整
    initialSize=10
    # 連接池中允許的最小空閑連接數(shù)量,可以根據(jù)實際情況調(diào)整
    minIdle=10
    # 連接池中允許的最大連接數(shù)量,可以根據(jù)實際情況調(diào)整
    maxActive=20
    # 獲取連接最大等待時間,單位毫秒,建議保持不變
    maxWait=30000
    
    # 連接保活配置項,建議保持不變,否則可能出現(xiàn)連接斷開
    # 異常ConnectionDisconnectedException
    druid.keepAlive=true
    druid.keepAliveBetweenTimeMillis=30000
    minEvictableIdleTimeMillis=600000
    maxEvictableIdleTimeMillis=900000
    timeBetweenEvictionRunsMillis=5000
    
    # 連接驗證配置項,建議保持不變
    validationQuery=SELECT 1
    testWhileIdle=true
    testOnBorrow=false
    testOnReturn=false
    
    # PreparedStatement緩存配置項,這里配置為關(guān)閉緩存,建議保持不變
    # 否則運行時可能會出現(xiàn)NoSuchStatement異常
    poolPreparedStatements=false
    maxOpenPreparedStatements=-1
    druid.maxPoolPreparedStatementPerConnectionSize=-1
    說明
    • 請根據(jù)注釋說明替換或者調(diào)整以下配置項:

      • url:連接寬表引擎的連接地址,獲取方法請參見獲取連接地址

      • username:訪問寬表引擎的用戶名,通過Lindorm寬表引擎的集群管理系統(tǒng)查看,具體請參見管理用戶

      • password:訪問寬表引擎的密碼。如果您忘記了密碼,可以通過Lindorm寬表引擎的集群管理系統(tǒng)修改密碼,具體操作請參見修改用戶密碼

    • 更多配置項的說明請參見DruidDataSource配置屬性列表

  2. 加載連接池Druid的參數(shù)并初始化連接池Druid。

    // 加載參數(shù)
    Properties properties = new Properties();
    InputStream inputStream = DruidPoolDemo.class.getClassLoader().getResourceAsStream("druid.properties");
    properties.load(inputStream);
    // 初始化連接池
    DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
  3. 通過連接池Druid獲取JDBC的連接信息并訪問Lindorm寬表引擎。

    /* -------------- 基于JDBC的訪問示例 ----------------- */
    
    String tableName = "sql_table_" + new Random().nextInt(1000);
    // 創(chuàng)建表
    try (Connection connection = dataSource.getConnection()) {
        try (Statement statement = connection.createStatement()) {
            String sql = "create table if not exists " + tableName + "(id VARCHAR, name VARCHAR, primary key(id))";
            int ret = statement.executeUpdate(sql);
            System.out.println(ret);
        }
    }
    
    // 插入數(shù)據(jù)
    try (Connection connection = dataSource.getConnection()) {
        String sql = "upsert into " + tableName + "(id,name) values(?,?)";
        try (PreparedStatement ps = connection.prepareStatement(sql)) {
            ps.setString(1, "aa");
            ps.setString(2, "bb");
    
            int ret = ps.executeUpdate();
            System.out.println(ret);
        }
    }
    
    // 查詢數(shù)據(jù)
    try (Connection connection = dataSource.getConnection()) {
        String sql = "select * from " + tableName + " where id=?";
        try (PreparedStatement ps = connection.prepareStatement(sql)) {
            ps.setString(1, "aa");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                String id = rs.getString(1);
                String name = rs.getString(2);
                System.out.println("id=" + id);
                System.out.println("name=" + name);
            }
        }
    }
    
    // 刪除數(shù)據(jù)
    try (Connection connection = dataSource.getConnection()) {
        String sql = "delete from " + tableName + " where id=?";
        try (PreparedStatement ps = connection.prepareStatement(sql)) {
            ps.setString(1, "aa");
            ps.executeUpdate();
        }
    }