SpringBoot 连接 seekdb 示例程序
本文将介绍如何使用 SpringBoot 框架和 seekdb 构建一个应用程序,实现创建表、插入数据和查询数据等基本操作。
点击下载 java-oceanbase-springboot 示例工程
前提条件
- 您已安装 seekdb。
- 您已安装 JDK 1.8 和 Maven。
- 您已安装 IntelliJ IDEA。
本文档运行代码使用的工具是 IntelliJ IDEA 2021.3.2 (Community Edition) 版本,您也可以根据个人喜好选择适合自己的工具运行示例代码。
操作步骤
本文中给出的操作步骤是基于 Windows 环境生成。如果您使用的是其他操作系统环境或编译器,那么操作步骤可能会略有不同。
- 获取 seekdb 连接信息。
- 导入
java-oceanbase-springboot项目到 IDEA 中。 - 修改
java-oceanbase-springboot项目中的数据库连接信息。 - 运行
java-oceanbase-springboot项目。
步骤一:获取 seekdb 连接信息
-
联系 seekdb 部署人员或者管理员获取相应的数据库连接信息。
mysql -hxx.xx.xx.xx -P2881 -uroot -p**** -A -
根据已部署的 seekdb 填写下面 URL 的对应信息。
信息在
application.properties文件中需要这里的 URL 信息。jdbc:oceanbase://host:port/schema_name?user=$user_name&password=$password&useSSL=false&useUnicode=true&characterEncoding=utf-8参数说明:
-
host:提供 seekdb 的连接 IP。应该被实际的 IP 替换,也可以使用本地 IP 及 127.0.0.1。 -
port:提供 seekdb 接端口。应该被实际的端口替换,默认是 2881,在部署 seekdb 时可自定义。 -
schema_name:需要访问的 Schema 名称。 -
user_name:通过-u参数指定,格式为 用户。默认用户为root。 -
password:提供账户密码。 -
useSSL=false&useUnicode=true&characterEncoding=utf-8:为额外的连接属性。useSSL:强制连接时是否使用SSL/TLS。 默认值:false。useUnicode:指定字符的编码、解码格式。 默认值:true。characterEncoding:支持数据库 URL 选项的字符编码。默认值:utf8。
-
更多 URL 参数说明信息,请参见 数据库 URL。
步骤二:导入 java-oceanbase-springboot 项目到 IDEA 中
-
打开 IntelliJ IDEA,选择 File > Open... 选项。

-
在弹出的 Open File or Project 窗口中,选择对应的项目文件,单击 OK 完成项目文件导入。
-
IntelliJ IDEA 将会自动识别项目中的各类文件,并在 Project 工具窗口中,可以查看项目的目录结构、文件列表、模块列表、依赖关系等信息。Project 工具窗口通常位于 IntelliJ IDEA 界面的最左侧,默认情况下是打开的。如果 Project 工具窗口被关闭了,可以通过点击菜单栏中的 View > Tool Windows > Project 或者使用快捷键 Alt + 1 来重新打开它。
信息当使用 IntelliJ IDEA 导入项目时,IntelliJ IDEA 会自动检测项目中的 pom.xml 文件,并根据文件中描述的依赖关系自动下载所需的依赖库,并将它们添加到项目中。
-
查看项目情况。

步骤三:修改 java-oceanbase-springboot 项目中的数据库连接信息
根据 步骤一:获取 seekdb 连接信息 中的信息修改 application.properties 文件中的数据库连接信息。
示例如下:
- 数据库驱动的名称为:
com.mysql.cj.jdbc.Driver - seekdb 的 IP 地址为
10.10.10.1。 - 访问端口使用的是 2881。
- 需要访问的 Schema 名称为
test。 - 连接账户是
root。 - 密码是
******。
示例代码如下:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:oceanbase://10.10.10.1:2881/test?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=******
步骤四:运行 java-oceanbase-springboot 项目
运行路径
- 在项目结构中找到 src > test > java 中找到
TestSpringbootApplicationTests.java文件。 - 在工具菜单栏中选择 运行(U) > 运行 > TestSpringbootApplicationTests,或直接单击右上角绿色三角形运行。
- 通过 IDEA 的控制台来查看项目的日志信息和输出结果。
运行结果
test_springboot delete successfully!
test_springboot create successfully!
user = User{id=2, name='update'}
User{id=2, name='update'}
User{id=3, name='insert3'}
User{id=4, name='insert4'}
User{id=5, name='insert5'}
User{id=6, name='insert6'}
User{id=7, name='insert7'}
User{id=8, name='insert8'}
User{id=9, name='insert9'}
User{id=10, name='insert10'}
常见问题
1. 连接超时
如果遇到连接超时问题,可以在 JDBC URL 中配置连接超时参数:
jdbc:mysql://host:port/database?connectTimeout=30000&socketTimeout=60000
2. 字符集问题
为确保正确的字符编码,在 JDBC URL 中设置正确的字符集参数:
jdbc:mysql://host:port/database?characterEncoding=utf8&useUnicode=true
3. SSL 连接
要启用与 seekdb 的 SSL 连接,在 JDBC URL 中添加以下参数:
jdbc:mysql://host:port/database?useSSL=true&requireSSL=true
4. 账号密码中的特殊字符
如果用户名或密码包含特殊字符(如 #),需要进行 URL 编码:
String encodedPassword = URLEncoder.encode(password, "UTF-8");
使用 MySQL Connector/J 8.x 时,确保账号密码不包含井号(#)。否则,可能会遇到连接错误。
项目代码介绍
点击 java-oceanbase-springboot 下载项目代码,这是一个名为 java-oceanbase-springboot 的压缩包。
解压后,得到一个名为 java-oceanbase-springboot 的文件夹。目录结构如下所示:
│--pom.xml
│
├─.idea
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─oceanbase
│ │ │ └─testspringboot
│ │ │ │--TestSpringbootApplication.java
│ │ │ │
│ │ │ ├─dao
│ │ │ │ │--UserDao.java
│ │ │ │ │
│ │ │ │ └─impl
│ │ │ │ └─--UserDaoImpl.java
│ │ │ │
│ │ │ └─entity
│ │ │ └─--User.java
│ │ │
│ │ └─resources
│ │ └─--application.properties
│ │
│ └─test
│ └─java
│ └─com
│ └─oceanbase
│ └─testspringboot
│ └─--TestSpringbootApplicationTests.java
│
└─target
文件说明:
pom.xml:Maven 项目的配置文件,包含了项目的依赖、插件、构建等信息。.idea:IDE(集成开发环境)中使用的目录,用于存储项目相关的配置信息。src:通常用于表示项目中存放源代码的目录。main: 存放主要的源代码和资源文件的目录。java: 存放 Java 源代码的目录。com: 存放 Java 包的根目录。oceanbase: 存放项目的根目录。testspringboot:Java 包的根目录,包含了项目的所有 Java 类。TestSpringbootApplication.java:项目的主类,包含了 main 方法。dao: 存放数据访问对象(Data Access Object)包,用于访问数据库或其他数据存储服务。UserDao.java:用户数据访问对象,用于操作用户数据的增删改查等操作。impl:DAO 接口的实现目录。UserDaoImpl.java:用户 DAO 接口的实现类。entity:实体类的目录,用于存放与数据库表对应的 Java 类。User.java:用户持久化对象,用于映射用户数据表的字段。resources: 存放资源文件的目录,如配置文件、SQL 文件等。application.properties:项目的配置文件,用于配置应用程序的属性和参数。test: 存放测试代码和资源文件的目录。TestSpringbootApplicationTests.java: 存放测试 springboot 的 Java 类。target: 存放编译后的 Class 文件、Jar 包等文件的目录。
pom.xml 代码介绍
如果您只是想验证示例,那么请使用默认代码,无需修改。您也可以按照以下讲解,根据自己的需求修改 pom.xml 文件。
pom.xml 配置文件内容如下:
-
文件声明语句。
声明本文件是一个 XML 文件,使用的 XML 版本是
1.0,字符编码方式是UTF-8。代码如下:
<?xml version="1.0" encoding="UTF-8"?> -
配置 POM 的命名空间和 POM 模型版本。
- 通过
xmlns指定 POM 的命名空间为http://maven.apache.org/POM/4.0.0。 - 通过
xmlns:xsi指定 XML 命名空间为http://www.w3.org/2001/XMLSchema-instance。 - 通过
xsi:schemaLocation指定 POM 的命名空间为http://maven.apache.org/POM/4.0.0,并指定 POM 的 XSD 文件的位置为https://maven.apache.org/xsd/maven-4.0.0.xsd。 - 通过
<modelVersion>元素指定该 POM 文件使用的 POM 模型版本为4.0.0。
代码如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
</project> - 通过
-
配置父项信息。
- 通过
<groupId>指定父项标识为org.springframework.boot。 - 通过
<artifactId>指定父项依赖为spring-boot-starter-parent。 - 通过
<version>指定父项的版本号为2.7.11。 - 通过
relativePath表示父项的路径为空。
代码如下:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.11</version>
<relativePath/> - 通过
-
配置基本信息。
- 通过
<groupId>指定项目标识为com.oceanbase。 - 通过
<artifactId>指定项目依赖为java-oceanbase-springboot。 - 通过
<version>指定项目的版本号为0.0.1-SNAPSHOT。 - 通过
description介绍项目信息为Demo project for Spring Boot。
代码如下:
<groupId>com.oceanbase</groupId>
<artifactId>java-oceanbase-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>java-oceanbase-springboot</name>
<description>Demo project for Spring Boot</description> - 通过
-
配置 java 版本。
指定项目使用的 Java 版本为 1.8。
代码如下:
<properties>
<java.version>1.8</java.version>
</properties> -
配置核心依赖。
-
指定依赖项所属的组织为
org.springframework.boot,名称为spring-boot-starter,该依赖库包含 了 Spring Boot 默认支持的组件依赖,支持 Web、数据处理、安全、Test 等功能。代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> -
指定依赖项所属的组织为
org.springframework.boot,名称为spring-boot-starter-jdbc,通过该依赖可以使用 Spring Boot 提供的 JDBC 相关功能,如连接池、数据源配置等。代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> -
指定依赖项所属的组织为
org.springframework.boot,名称为spring-boot-starter-test,作用范围为test,通过该依赖可以使用 Spring Boot 提供的测试框架和工具,如 JUnit、Mockito、Hamcrest 等。代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> -
指定依赖项所属的组织为
com.oceanbase,名称为oceanbase-client,版本号为2.4.3,通过该依赖可以使用 OceanBase 提供的客户端功能,如连接、查询、事务等。代码如下:
<dependencies>
<dependency>
<groupId>com.oceanbase</groupId>
<artifactId>oceanbase-client</artifactId>
<version>2.4.3</version>
</dependency>
</dependencies>
-
-
配置 Maven 插件。
指定依赖项所属的组织为
org.springframework.boot,名称为spring-boot-maven-plugin,该插件用于将 Spring Boot 应用程序打包成可执行的 JAR 包或 WAR 包,并且可以直接运行。代码如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
application.properties 代码介绍
application.properties 文件配置了 Spring Boot 应用程序的数据源,指定了连接 seekdb 所需的驱动类名、URL、用户名和密码。通过这些配置,应用程序可以连接并操作 seekdb。
-
通过
spring.datasource.driverClassName指定数据库驱动程序为com.oceanbase.jdbc.Driver,用于与 seekdb 建立连接。 -
通过
spring.datasource.url指定连接数据库的 URL。 -
通过
spring.datasource.username指定连接数据库的用户名。 -
通过
spring.datasource.password指定连接数据库的密码。代码如下:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:oceanbase://host:port/schema_name?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=user_name
spring.datasource.password=******
UserDaoImpl.java 文件介绍
UserDaoImpl.java 文件通过使用 JdbcTemplate 对象执行 SQL 语句,实现了对 User 表的插入、删除、更新和查询操作。
UserDaoImpl.java 文件的代码主要包括以下几个部分:
-
引用其他类和接口。
声明当前文件所属的包名为
com.oceanbase.testspringboot.dao.impl,包含以下接口和类:UserDao接口:用于实现了 UserDao 接口中定义的方法。User类:用于传递和存储用户数据。Autowired注解:将 JdbcTemplate 对象注入到该类中,用于执行 SQL 语句。BeanPropertyRowMapper类:用于将数据库查询结果映射为 Java 对象。JdbcTemplate类:用于执行 SQL 语句和处理数据库访问。Repository注解:标记 Spring 的仓库组件,用于数据访问。List接口:用于操作查询结果集合。
代码如下:
import com.oceanbase.testspringboot.dao.UserDao;
import com.oceanbase.testspringboot.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List; -
定义
UserDaoImpl类。通过使用
Repository注解指定该类的Bean名称为userDao,并使用JdbcTemplate对象执行 SQL 语句,实现了对User表的插入、删除、更新和查询操作。-
插入用户信息。
通过调用
JdbcTemplate对象的insert方法,将用户的 ID 和姓名插入到数据库中的test_springboot表中,并根据插入操作的结果返回相应的布尔值。代码如下:
@Autowired
private JdbcTemplate jdbcTemplate; //Jdbc connection tool class
@Override
public boolean insertUser(User user) {
String sql = "insert into test_springboot(id,name)values(?,?)";
Object[] params = {user.getId(), user.getName()};
return jdbcTemplate.update(sql, params) > 0;
} -
删除用户信息。
通过调用
JdbcTemplate对象的delete方法,根据用户的 ID 删除数据库中的用户信息,并根据删除操作的结果返回相应的布尔值。代码如下:
@Override
public boolean deleteById(Long id) {
String sql = "delete from test_springboot where id=?";
Object[] params = {id};
return jdbcTemplate.update(sql, params) > 0;
} -
更新用户信息。
通过调用
JdbcTemplate对象的update方法,将用户的姓名更新到数据库中的 test_springboot 表中指定 ID 的记录,并根据更新操作的结果返回相应的布尔值。代码如下:
@Override
public boolean updateUser(User user) {
String sql = "update test_springboot set name=? where id=?";
Object[] params = {user.getName(), user.getId()};
return jdbcTemplate.update(sql, params) > 0;
} -
查询用户信息。
通过使用
JdbcTemplate对象执行 SQL 查询语句,从名为test_springboot的表中查询指定 ID 的用户记录,并使用BeanPropertyRowMapper进行结果映射。返回查询结果对象。代码如下:
@Override
public User selectUserById(Long id) {
String sql = "select * from test_springboot where id=?";
Object[] params = new Object[]{id};
return jdbcTemplate.queryForObject(
sql,
params,
new BeanPropertyRowMapper<>(User.class));
} -
查询所有用户信息。
通过调用
JdbcTemplate对象的query方法,查询数据库中的所有用户信息,并将查询结果映射为 User 类型的对象列表返回。代码如下:
@Override
public List<User> selectAllUsers() {
String sql = "select * from test_springboot";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
}
-
UserDao.java 文件介绍
UserDao.java 文件通过 UserDao 接口用于定义对用户数据的操作方法。
UserDao.java 文件的代码主要包括以下几个部分:
-
引用其他类和接口。
声明当前文件所属的包名为
package com.oceanbase.testspringboot.dao,包含以下接口和类:User类:用于传递和存储用户数据。List接口:用于操作查询结果集合。
代码如下:
import com.oceanbase.testspringboot.entity.User;
import java.util.List; -
定义
UserDao接口。通过使用
UserDao接口,定义对用户数据的操作方法。包括插入用户信息、删除用户信息、更新用户信息、根据用户 ID 查询用户信息以及查询所有用户信息等方法。代码如下:
public interface UserDao {
boolean insertUser(User user);
boolean deleteById(Long id);
boolean updateUser(User user);
User selectUserById(Long id);
List<User> selectAllUsers();
}
User.java 文件介绍
User.java 文件通过定义 User 类用于表示用户对象。
-
声明
User对象。 声明User类包含id和name两个私有字段,并提供了一个无参构造方法。通过设置和获取id和name字段的值来操作用户信息。代码如下:
private Long id;
private String name;
public User() {
} -
创建
User对象。 定义User类的带参构造方法,用于创建一个具有指定id和name的User对象。代码如下:
public User(Long id, String name) {
this.id = id;
this.name = name;
} -
获取和设置
id和name值。 定义User类中的四个方法,用于获取和设置id和name属性的值。getId方法用于获取id值,setId方法用于设置id值。getName方法用于获取用户名name的值。setName方法用于设置用户名name的值。代码如下:
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} -
返回
User对象的字符串表示形式。重写
User类中的toString方法,用于返回User对象的字符串表示形式。 定义@Override覆盖父类中的同名方法。定义toString方法,用于返回User对象的字符串表示形式。通过字符串拼接,将id和name属性的值格式化为一个字符串,返回给调用者User。代码如下:
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
TestSpringbootApplication.java 文件介绍
TestSpringbootApplication.java 文件通过 UserDao 接口用于启动 Spring Boot 应用程序。
TestSpringbootApplication.java 文件的代码主要包括以下几个部分:
-
定义类和接口。
声明当前文件所属的包名为
com.oceanbase.testspringboot,包含以下接口和类:SpringApplication类:用于启动 Spring Boot 应用程序。@SpringBootApplication注解:用于指示该类是 Spring Boot 应用程序的入口点。
代码如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; -
定义
TestSpringbootApplication类。使用 SpringBootApplication 注解标识该类是一个 Spring Boot 应用程 序的入口类。通过调用 SpringApplication 类的 run 方法,可以启动 Spring Boot 应用程序。
代码如下:
@SpringBootApplication
public class TestSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(TestSpringbootApplication.class, args);
}
}
TestSpringbootApplicationTests.java 文件介绍
TestSpringbootApplicationTests.java 文件通过 UserDao 接口用于启动 Spring Boot 应用程序。
TestSpringbootApplicationTests.java 文件的代码主要包括以下几个部分:
-
引用其他类和接口。
声明当前文件所属的包名为
com.oceanbase.testspringboot,包含以下接口和类:UserDao接口:用于实现了 UserDao 接口中定义的方法。User类:用于传递和存储用户数据。Test注解:用于标识测试方法。Autowired注解:将 JdbcTemplate 对象注入到该类中,用于执行 SQL 语句。SpringBootTest注解:用于标识该类是一个 Spring Boot 的测试类。JdbcTemplate类:用于执行 SQL 语句和处理数据库访问。List接口:用于操作查询结果集合。
代码如下:
import com.oceanbase.testspringboot.dao.UserDao;
import com.oceanbase.testspringboot.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List; -
定义
TestSpringbootApplicationTests类。使用
SpringBootTest注解标识测试 Spring Boot 应用程序中的功能。通过使用UserDao和JdbcTemplate对象,对用户数据进行增删改查操 作,并输出结果。-
定义对象。
使用
Autowired注解自动注入UserDao和JdbcTemplate对象。代码如下:
@Autowired
private UserDao userDao;
@Autowired
private JdbcTemplate jdbcTemplate; -
定义
contextLoads方法。使用
contextLoads方法作为测试方法的具体实现。-
删除
test_springboot表。使用
jdbcTemplate.execute方法执行 SQL 语句drop table test_springboot,删除名为test_springboot的表。代码如下:
try {
jdbcTemplate.execute("drop table test_springboot");
System.out.println("test_springboot delete successfully!");
} -
创建
test_springboot表。使用
jdbcTemplate.execute方法执行 SQL 语句create table test_springboot (id int primary key, name varchar(50)),创建名为test_springboot的表,包含id和name两个字段。代码如下:
catch (Exception ignore) {
} finally {
jdbcTemplate.execute("create table test_springboot (" +
"id int primary key," +
"name varchar(50))");
System.out.println("test_springboot create successfully!");
} -
插入数据。
使用
userDao.insertUser方法向test_springboot表中插入 10 条用户数据,id从 1 到 10,name为"insert" + i。代码如下:
for (int i = 1; i <= 10; i++) {
userDao.insertUser(new User((long) i, "insert" + i));
} -
删除数据。
使用
userDao.deleteById方法删除id为 1 的用户数据。代码如下:
userDao.deleteById(1L); -
更新数据。
使用
userDao.updateUser方法更新id为 2 的用户数据,将name修改为update。代码如下:
userDao.updateUser(new User(2L, "update")); -
查询数据。
使用
userDao.selectUserById方法查询id为 2 的用户数据,并将结果打印输出。代码如下:
User user = userDao.selectUserById(2L);
System.out.println("user = " + user); -
查询所有数据。
使用
userDao.selectAllUsers方法查询test_springboot表中的所有用户数据,并将结果打印输出。代码如下:
List<User> userList = userDao.selectAllUsers();
userList.forEach(System.out::println);
-
-
完整的代码展示
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.oceanbase</groupId>
<artifactId>java-oceanbase-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>java-oceanbase-springboot</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.oceanbase</groupId>
<artifactId>oceanbase-client</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:oceanbase://host:port/schema_name?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=user_name
spring.datasource.password=******
UserDaoImpl.java
package com.oceanbase.testspringboot.dao.impl;
import com.oceanbase.testspringboot.dao.UserDao;
import com.oceanbase.testspringboot.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate; //Jdbc connection tool class
@Override
public boolean insertUser(User user) {
String sql = "insert into test_springboot(id,name)values(?,?)";
Object[] params = {user.getId(), user.getName()};
return jdbcTemplate.update(sql, params) > 0;
}
@Override
public boolean deleteById(Long id) {
String sql = "delete from test_springboot where id=?";
Object[] params = {id};
return jdbcTemplate.update(sql, params) > 0;
}
@Override
public boolean updateUser(User user) {
String sql = "update test_springboot set name=? where id=?";
Object[] params = {user.getName(), user.getId()};
return jdbcTemplate.update(sql, params) > 0;
}
@Override
public User selectUserById(Long id) {
String sql = "select * from test_springboot where id=?";
Object[] params = new Object[]{id};
return jdbcTemplate.queryForObject(
sql,
params,
new BeanPropertyRowMapper<>(User.class));
}
@Override
public List<User> selectAllUsers() {
String sql = "select * from test_springboot";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
}
}
UserDao.java
package com.oceanbase.testspringboot.dao;
import com.oceanbase.testspringboot.entity.User;
import java.util.List;
public interface UserDao {
boolean insertUser(User user);
boolean deleteById(Long id);
boolean updateUser(User user);
User selectUserById(Long id);
List<User> selectAllUsers();
}
User.java
package com.oceanbase.testspringboot.entity;
public class User {
private Long id;
private String name;
public User() {
}
public User(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
TestSpringbootApplication.java
package com.oceanbase.testspringboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(TestSpringbootApplication.class, args);
}
}
TestSpringbootApplicationTests.java
package com.oceanbase.testspringboot;
import com.oceanbase.testspringboot.dao.UserDao;
import com.oceanbase.testspringboot.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
@SpringBootTest
class TestSpringbootApplicationTests {
@Autowired
private UserDao userDao;
@Autowired
private JdbcTemplate jdbcTemplate; //Jdbc connection tool class
@Test
void contextLoads() {
try {
// Use the execute() method to execute SQL statements and delete the user table test_springboot
jdbcTemplate.execute("drop table test_springboot");
System.out.println("test_springboot delete successfully!");
} catch (Exception ignore) {
} finally {
// Use the execute() method to execute SQL statements and create user table tests_ user
jdbcTemplate.execute("create table test_springboot (" +
"id int primary key," +
"name varchar(50))");
System.out.println("test_springboot create successfully!");
}
//UserDao userDao=new UserDaoImpl();
//ApplicationContext ioc=new ApplicationContext("/appli");`
//add
for (int i = 1; i <= 10; i++) {
userDao.insertUser(new User((long) i, "insert" + i));
}
//delete
userDao.deleteById(1L);
//update
userDao.updateUser(new User(2L, "update"));
//selectUserById
User user = userDao.selectUserById(2L);
System.out.println("user = " + user);
//query all users
List<User> userList = userDao.selectAllUsers();
userList.forEach(System.out::println);
}
}
相关文档
更多 OceanBase Connector/J 的信息,请参见 OceanBase JDBC 驱动程序