• Apache Derby的使用


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

    一、使用IDEA创建Maven项目

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

    二、添加依赖

    1. <dependency>
    2. <groupId>org.springframeworkgroupId>
    3. <artifactId>spring-jdbcartifactId>
    4. <version>4.3.30.RELEASEversion>
    5. dependency>
    6. <dependency>
    7. <groupId>org.apache.derbygroupId>
    8. <artifactId>derbyartifactId>
    9. <version>10.14.2.0version>
    10. <scope>testscope>
    11. dependency>
    12. <dependency>
    13. <groupId>junitgroupId>
    14. <artifactId>junitartifactId>
    15. <version>4.13.1version>
    16. <scope>testscope>
    17. dependency>

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

    三、准备初始化脚本

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

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

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

    四、单元测试准备工作

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

    1. package cn.horse.demo;
    2. import org.junit.Before;
    3. import org.junit.Test;
    4. import org.springframework.core.io.ClassPathResource;
    5. import org.springframework.jdbc.core.JdbcTemplate;
    6. import org.springframework.jdbc.core.RowCallbackHandler;
    7. import org.springframework.jdbc.datasource.DriverManagerDataSource;
    8. import org.springframework.jdbc.datasource.init.ScriptUtils;
    9. import javax.sql.DataSource;
    10. import java.sql.ResultSet;
    11. import java.sql.SQLException;
    12. public class DatabaseTest {
    13. static final DataSource dataSource;
    14. static final JdbcTemplate jdbcTemplate;
    15. static {
    16. DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
    17. driverManagerDataSource.setDriverClassName("org.apache.derby.jdbc.EmbeddedDriver");
    18. driverManagerDataSource.setUrl("jdbc:derby:demo;create=true");
    19. driverManagerDataSource.setUsername("");
    20. driverManagerDataSource.setPassword("");
    21. dataSource = driverManagerDataSource;
    22. jdbcTemplate = new JdbcTemplate(dataSource);
    23. }
    24. @Before
    25. public void init() throws SQLException {
    26. ScriptUtils.executeSqlScript(dataSource.getConnection(), new ClassPathResource("demo.sql"));
    27. }
    28. }

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

    五、查询数据

    在DatabaseTest类中新增查询方法

    1. @Test
    2. public void find() {
    3. query();
    4. }
    5. private void query() {
    6. jdbcTemplate.query("SELECT id, username FROM T_USER", new RowCallbackHandler() {
    7. @Override
    8. public void processRow(ResultSet rs) throws SQLException {
    9. System.out.println("id: " + rs.getInt("id") + ", username: " + rs.getString("username"));
    10. }
    11. });
    12. }

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

    六、添加数据

    在DatabaseTest类中新增添加方法

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

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

    七、更新数据

    在DatabaseTest类中新增更新方法

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

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

    八、删除数据

    在DatabaseTest类中新增删除方法

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

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

  • 相关阅读:
    SpringBoot 02: 初识SpringBoot
    小米手机抓取hci log
    jQuery为元素绑定事件
    算法day31|455,476,53
    由小见大!不规则造型按钮解决方案
    电子邮件营销初学者指南(一):定义、类型和优势好处
    【Git】必要配置、基本理论、基本操作
    Lab1:练习4——分析bootloader加载ELF格式的OS的过程
    面试技巧:原来薪资可以这样谈~
    Java-图书项目(封装、继承、多态)
  • 原文地址:https://blog.csdn.net/m1729339749/article/details/133317680