当前位置: 首页 > news >正文

Apache Derby的使用

Apache Derby是关系型数据库,可以嵌入式方式运行,也可以独立运行,当使用嵌入式方式运行时常用于单元测试,本篇我们就使用单元测试来探索Apache Derby的使用

一、使用IDEA创建Maven项目

打开IDEA创建Maven项目,这里我使用的JDK版本为1.8版本。

二、添加依赖

<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.30.RELEASE</version>
</dependency>
<dependency><groupId>org.apache.derby</groupId><artifactId>derby</artifactId><version>10.14.2.0</version><scope>test</scope>
</dependency>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version><scope>test</scope>
</dependency>

这里使用spring-jdbc主要是为了使用spring执行SQL脚本、执行SQL语句时使用;嵌入式运行Apache Derby需要引入derby的包;单元测试引入了junit

三、准备初始化脚本

在src/test/resources下新建demo.sql

DROP TABLE T_USER;CREATE TABLE T_USER(id INT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1),username VARCHAR(255) NOT NULL
);INSERT INTO T_USER(username) VALUES('张三'),('李四'),('王五');

脚本中我们删除并创建了T_USER表,向表中插入了三条数据。

四、单元测试准备工作

在src/test/java下新建cn.horse.demo包,在包下新建DatabaseTest类

package cn.horse.demo;import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.init.ScriptUtils;import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;public class DatabaseTest {static final DataSource dataSource;static final JdbcTemplate jdbcTemplate;static {DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();driverManagerDataSource.setDriverClassName("org.apache.derby.jdbc.EmbeddedDriver");driverManagerDataSource.setUrl("jdbc:derby:demo;create=true");driverManagerDataSource.setUsername("");driverManagerDataSource.setPassword("");dataSource = driverManagerDataSource;jdbcTemplate = new JdbcTemplate(dataSource);}@Beforepublic void init() throws SQLException {ScriptUtils.executeSqlScript(dataSource.getConnection(), new ClassPathResource("demo.sql"));}
}

DatabaseTest类中我们在类加载时初始化了数据源和JdbcTemplate对象;在单元测试执行之前,我们执行了初始化脚本;

五、查询数据

在DatabaseTest类中新增查询方法

@Test
public void find() {query();
}private void query() {jdbcTemplate.query("SELECT id, username FROM T_USER", new RowCallbackHandler() {@Overridepublic void processRow(ResultSet rs) throws SQLException {System.out.println("id: " + rs.getInt("id") + ", username: " + rs.getString("username"));}});
}

执行单元测试的结果如下:

六、添加数据

在DatabaseTest类中新增添加方法

@Test
public void add() {jdbcTemplate.execute("INSERT INTO T_USER(username) VALUES('赵六')");query();
}

执行单元测试的结果如下:

七、更新数据

在DatabaseTest类中新增更新方法

@Test
public void update() {jdbcTemplate.execute("UPDATE T_USER SET username='张三1' WHERE id = 1");query();
}

执行单元测试的结果如下:

八、删除数据

在DatabaseTest类中新增删除方法

@Test
public void delete() {jdbcTemplate.execute("DELETE FROM T_USER WHERE id = 1");query();
}

执行单元测试的结果如下:

http://www.lryc.cn/news/180026.html

相关文章:

  • leetcode 图相关的题
  • 程序员们,我们能工作到65岁吗?
  • 【洛谷 P1996】约瑟夫问题 题解(队列+模拟+循环)
  • 字符串函数与内存函数讲解
  • c语言系统编程之多进程
  • 前端还是后端:探讨Web开发的两大街区
  • JavaScript中如何确定this的值?如何指定this的值?
  • ubuntu下源码编译方式安装opencv
  • spring boot整合常用redis客户端(Jedis、Lettuce、RedisTemplate、Redisson)常见场景解决方案
  • HarmonyOS之运行Hello World
  • postgresql数据库|wal日志的开启以及如何管理
  • 小波变换学习笔记【1】
  • 雷柏mv20鼠标使用体验
  • 【分布式云储存】Springboot微服务接入MinIO实现文件服务
  • 机器人中的数值优化|【四】L-BFGS理论推导与延伸
  • ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板
  • 本地部署 川虎 Chat
  • IntelliJ IDEA 控制台中文乱码的四种解决方法
  • 23岁准备转行嵌入式
  • http请求报错:406 Not Acceptable的解决办法
  • 信息化发展75
  • C++八股
  • Nat. Commun. | 大规模高分辨单光子成像
  • Android开源库
  • 【小程序 - 基础】页面导航、页面事件、生命周期、WXS脚本_04
  • 矩阵求导数
  • 竞赛 大数据疫情分析及可视化系统
  • 数据结构--栈
  • 期权定价模型系列【7】:Barone-Adesi-Whaley定价模型
  • 【Axure高保真原型】3D圆柱图_中继器版