名字设计签名免费,做网站和优化,自动编程软件,湖州找工作网Apache Derby是关系型数据库#xff0c;可以嵌入式方式运行#xff0c;也可以独立运行#xff0c;当使用嵌入式方式运行时常用于单元测试#xff0c;本篇我们就使用单元测试来探索Apache Derby的使用
一、使用IDEA创建Maven项目
打开IDEA创建Maven项目#xff0c;这里我…Apache Derby是关系型数据库可以嵌入式方式运行也可以独立运行当使用嵌入式方式运行时常用于单元测试本篇我们就使用单元测试来探索Apache Derby的使用
一、使用IDEA创建Maven项目
打开IDEA创建Maven项目这里我使用的JDK版本为1.8版本。 二、添加依赖
dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion4.3.30.RELEASE/version
/dependency
dependencygroupIdorg.apache.derby/groupIdartifactIdderby/artifactIdversion10.14.2.0/versionscopetest/scope
/dependency
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.1/versionscopetest/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;createtrue);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();
}执行单元测试的结果如下