全部產品
Search
文件中心

Lindorm:基於LindormDataSource的應用開發

更新時間:Feb 11, 2026

LindormDataSource封裝了開箱即用的最佳配置,支援全類型Lindorm執行個體(單可用性區域、多可用性區域)訪問,是面向Lindorm訪問的最佳高效能JDBC串連池。在使用多可用性區域Lindorm寬表執行個體時,LindormDataSource可靈活適配多種存取原則,如就近可用性區域訪問、指定可用性區域訪問、隨機可用性區域訪問等。

前提條件

串連參數說明

說明

本參數說明適用於本文所有樣本。

當通過MySQL協議訪問Lindorm時,如果串連地址和屬性檔案(Properties)中均未指定串連配置,LindormDataSource將會自行填充以提升SQL訪問效能,因此您僅需填寫下表參數即可。更詳細的說明,請參見附錄

參數

說明

JdbcUrl(jdbcUrl)

MySQL協議的Java JDBC串連地址。格式為jdbc:mysql://<MySQL相容地址>/<資料庫名>

資料庫名不填寫時預設串連default資料庫。MySQL相容地址擷取方式:查看串連地址

重要
  • 如果應用部署在ECS執行個體,建議您通過專用網路訪問Lindorm執行個體,以獲得更高的安全性和更低的網路延遲。

  • 如果應用部署在本地,在通過公網串連Lindorm執行個體前需在控制台開通公網串連地址

  • 通過專用網路訪問時JdbcUrl請填寫MySQL相容地址對應的专有网络地址,通過公網訪問時JdbcUrl請填寫MySQL相容地址對應的公网地址。

Username(username)

串連寬表引擎的使用者名稱和密碼。

如果您忘記使用者密碼,可以通過Lindorm寬表引擎的叢集管理系統修改使用者密碼

Password(password)

JDBC應用接入

  1. 通過LindormDataSource串連Lindorm寬表引擎前,需要安裝相關依賴。

    以Maven專案為例,在pom.xml檔案的dependencies中添加以下依賴項。

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.3.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.aliyun.lindorm</groupId>
        <artifactId>lindorm-sql-datasource</artifactId>
        <version>2.2.1.4</version>
    </dependency>
  2. 您可以通過以下兩種方式串連Lindorm寬表引擎。

    • 在業務代碼中建立串連

      import com.aliyun.lindorm.sql.client.datasource.LindormDataSource;
      import com.aliyun.lindorm.sql.client.datasource.LindormDataSourceConfig;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      
      public class test {
          public static void main(String[] args) throws Exception{
              LindormDataSourceConfig lindormDataSourceConfig = new LindormDataSourceConfig();
              lindormDataSourceConfig.setJdbcUrl("jdbc:mysql://ld-bp1mq0tdzbx1m****-proxy-lindorm-pub.lindorm.aliyuncs.com:33060/database");
              lindormDataSourceConfig.setUsername("r***");
              lindormDataSourceConfig.setPassword("p***");
              lindormDataSourceConfig.setMaximumPoolSize(30);
              LindormDataSource lindormDataSource = new LindormDataSource(lindormDataSourceConfig);
      
              try (Connection connection = lindormDataSource.getConnection()) {
                  String sql = "select * from " + tableName + " where id=?";
                  try (PreparedStatement ps = connection.prepareStatement(sql)) {
                      ps.setString(1, "001");
                      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);
                      }
                  }
              }
      
          }
      }
    • 通過設定檔建立串連

      1. 在Maven專案的src/main/resources目錄中建立lindorm.properties檔案,並在檔案中添加以下內容:

        jdbcUrl=jdbc:mysql://ld-bp1mq0tdzbx1m****-proxy-lindorm-pub.lindorm.aliyuncs.com:33060/default
        username=r***
        password=p***
        maximumPoolSize=30
      2. 在您的業務代碼中添加以下內容。

        LindormDataSourceConfig config = new LindormDataSourceConfig("lindorm.properties");
        LindormDataSource lindormDataSource = new LindormDataSource(config);

Spring-Boot 2.x應用接入

  1. 通過LindormDataSource串連Lindorm寬表引擎前,需要安裝相關依賴。

    以Maven專案為例,在pom.xml檔案的dependencies中添加以下依賴項。

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.3.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.aliyun.lindorm</groupId>
        <artifactId>lindorm-sql-datasource-springboot-starter</artifactId>
        <version>2.2.1.4</version>
    </dependency>
  2. 添加Spring配置。在Maven專案的src/main/resources目錄中建立application.yml檔案,並在檔案中添加以下內容。

    spring:
      datasource:
        lindorm:
          jdbc-url: jdbc:mysql://ld-bp167w8n1ab5p****-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060/db1
          username: r***
          password: t***
          maximum-pool-size: 30
  3. 編寫業務代碼。

    @Service
    public class DatabaseService {
    
      @Autowired
      private DataSource dataSource;
    
      public void createUser(User user) throws SQLException {
        String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
    
        try (Connection conn = dataSource.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql)) {
          ps.setString(1, user.getName());
          ps.setInt(2, user.getAge());
          ps.executeUpdate();
        }
      }
    }

Spring-Boot 3.x應用接入

  1. 通過LindormDataSource串連Lindorm寬表引擎前,需要安裝相關依賴。

    以Maven專案為例,在pom.xml檔案的dependencies中添加以下依賴項。

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.3.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.aliyun.lindorm</groupId>
        <artifactId>lindorm-sql-datasource-springboot-3-starter</artifactId>
        <version>2.2.1.4</version>
    </dependency>
  2. 添加Spring配置。在Maven專案的src/main/resources目錄中建立application.yml檔案,並在檔案中添加以下內容。

    spring:
      datasource:
        lindorm:
          jdbc-url: jdbc:mysql://ld-bp167w8n1ab5p****-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060/db1
          username: r***
          password: r***
          maximum-pool-size: 30
  3. 編寫業務代碼。

    @Service
    public class DatabaseService {
    
      @Autowired
      private DataSource dataSource;
    
      public void createUser(User user) throws SQLException {
        String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
    
        try (Connection conn = dataSource.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql)) {
          ps.setString(1, user.getName());
          ps.setInt(2, user.getAge());
          ps.executeUpdate();
        }
      }
    }

MyBatis應用接入

在使用MyBatis時,如果基於Spring-Boot架構,可以在Spring-Boot中完成MyBatis配置。如果獨立使用MyBatis(不依賴Spring-Boot),請按照以下步驟進行配置。

  1. 通過LindormDataSource串連Lindorm寬表引擎前,需要安裝相關依賴。

    以Maven專案為例,在pom.xml檔案的dependencies中添加以下依賴項。

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.3.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.aliyun.lindorm</groupId>
        <artifactId>lindorm-sql-datasource</artifactId>
        <version>2.2.1.4</version>
    </dependency>
  2. 您可以通過以下兩種方式串連Lindorm寬表引擎。

    • 在業務代碼中建立串連

      SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
      
      LindormDataSource dataSource = new LindormDataSource();
      dataSource.setJdbcUrl("jdbc:mysql://ld-bp1mq0tdzbx1m****-proxy-lindorm-pub.lindorm.aliyuncs.com:33060");
      dataSource.setUsername("r***");
      dataSource.setPassword("r***");
      sessionFactoryBean.setDataSource(dataSource);
      
      SqlSessionFactory sessionFactory = sessionFactoryBean.getObject();
      try (SqlSession session = sessionFactory.openSession(true)) {
          UserMapper mapper = session.getMapper(UserMapper.class);
          mapper.insert(user);
      }
    • 通過設定檔建立串連

      1. 定義一個符合Mybatis的DataSourceFactory。

        package com.example.datasource;
        
        import com.aliyun.lindorm.sql.client.datasource.LindormDataSource;
        import com.aliyun.lindorm.sql.client.datasource.LindormDataSourceConfig;
        import org.apache.ibatis.datasource.DataSourceFactory;
        
        public class LindormDataSourceFactory implements DataSourceFactory {
          private Properties props;
        
          @Override
          public void setProperties(Properties props) {
            this.props = props;
          }
        
          @Override
          public DataSource getDataSource() {
            LindormDataSourceConfig config = new LindormDataSourceConfig(props);
            LindormDataSource dataSource = new LindormDataSource(config);
            return dataSource;
          }
        }
        
      2. 在Maven專案的src/main/resources目錄中建立mybatis-config.properties檔案,並在檔案中添加以下內容:

        <?xml version="1.0" encoding="UTF-8" ?>
        <!DOCTYPE configuration
                PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
                "http://mybatis.org/dtd/mybatis-3-config.dtd">
        <configuration>
            <environments default="development">
                <environment id="development">
                    <transactionManager type="JDBC"/>
                    <dataSource type="com.example.datasource.LindormDataSourceFactory">
                        <property name="jdbcUrl"
                                  value="jdbc:mysql://ld-8vbn68478unu8****-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060/lindorm_test"/>
                        <property name="username" value="r***"/>
                        <property name="password" value="t***"/>
                        <property name="maximumPoolSize" value="30"/>
                    </dataSource>
                </environment>
            </environments>
        
            <mappers>
                <mapper class="com.example.mapper.UserMapper"/>
            </mappers>
        </configuration>
        
      3. 在您的業務代碼中添加以下內容。

          public static void main(String[] args) throws SQLException, IOException {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        
            UserService userService = new UserService(sqlSessionFactory);
            userService.run();
          }

可選配置項

通常僅配置maximumPoolSize(最大串連池大小)即可,其餘配置項無需額外配置。

配置項

說明

maximumPoolSize

最大串連數量,預設值為10。您可以根據業務需求進行調整。

minimumIdle

最小空閑串連數。預設值和maximumPoolSize相同,對效能友好。如果串連數超過該值,並且串連空閑超過idleTimeout的值會中斷連線。

connectionTimeout

擷取連線逾時時間,單位為毫秒(ms),預設值為30000,即30秒。

keepaliveTime

串連保活時間間隔,單位為毫秒(ms),預設值為60000,即1分鐘。

idleTimeout

空閑連線逾時時間, 單位為毫秒(ms),預設值為600000,即10分鐘。

maxLifetime

串連最長生命週期,單位為毫秒(ms),預設值為1800000,即30分鐘。

附錄

當通過MySQL協議訪問Lindorm時,如果url(串連地址)和屬性檔案(Properties)中均未指定以下參數, LindormDataSource將會自行填充以提升SQL訪問效能。

自動填滿的預設參數如下:

    ("sslMode", "DISABLED");
    ("allowPublicKeyRetrieval", "true");
    ("useServerPrepStmts", "true");
    ("useLocalSessionState", "true");
    ("rewriteBatchedStatements", "true");
    ("cachePrepStmts", "true");
    ("prepStmtCacheSize", "300");
    ("prepStmtCacheSqlLimit", "50000000");

因此,使用LindormDataSource時僅填寫MySQL協議的JDBC串連地址(url)並指定目標資料庫(database)即可,無需在串連串中添加串連配置。例如:jdbc:mysql://ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com:33060/default