增删改查数据库
测试难免需要进行测试数据初始化,或者进行测试数据修复及校验,那么如何才能方便的对数据库进行增删改查呢?
主要的可以分为:
- 关系型数据库的操作,mysql,sqlserver
- 非关系型数据的操作,如redis,mongodb
关系型数据库:
- 直接调用JDBC进行数据操作
- 使用mybatis进行数据库操作
使用mybatis操作:
- pom.xml依赖配置
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
- resources中配置mybatis-config.xml
<configuration>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- 注册对象的空间命名 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 加载数据驱动 -->
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<!-- 数据库连接地址 -->
<property name="url" value="jdbc:sqlserver://10.***.***.18:1433;databaseName=**_Base_Join"/>
<!-- 数据库用户、密码 -->
<property name="username" value="admin"/>
<property name="password" value="*****"/>
</dataSource>
</environment>
</environments>
<!-- 注册映射文件:java对象与数据库之间的xml文件路径 -->
<mappers>
<mapper resource="mapper/sqlmapper.xml"/>
</mappers>
</configuration>
这里需要注意的是configuration中的配置是需要按顺序,不能随意排列,否则会报异常。
settings: 配置了mybatis数据库查询log的输出;
environments: 设置数据库的驱动、连接地址、账户、密码;
mapper: 设置java bean和数据字段的映射关系;
- resources下mapper/sqlmapper.xml的配置
<mapper namespace="com.camelot.mdapi.sdk.shipper.dto">
<!--获取登录接口case-->
<resultMap type="com.camelot.mdapi.sdk.shipper.dto.ShipperInterfaceDTO" id="t_shipper_interface_dto">
<result property="shipperCode" column="shipper_code" jdbcType="VARCHAR"/>
<result property="shipperName" column="shipper_name" jdbcType="VARCHAR"/>
<result property="shortName" column="short_name" jdbcType="VARCHAR"/>
省略。。。。。
</resultMap>
<select id="selectAll" parameterType="java.lang.String" resultMap="t_shipper_interface_dto">
select * from t_shipper
where shipper_code=#{shipperCode};
</select>
</mapper>
namespace: java bean类所在的包名;
resultMap: 设置对应的类,取个id方便后续使用,然后把bean中的每个变量和数据库中列对应起来,以便在增删改查中作为变量引用;
select: id设置为selectAll,parammeterType设置一个参数类型,引用id为t_shipper_interface_dto的map映射,参数传给#{shipperCode}
。
- Java Bean定义
public class ShipperInterfaceDTO implements Serializable{
private static final long serialVersionUID = 1276175265412595526L;
private String shipperCode;
private String shipperName;
private String shortName;
}
- 调用mapper中定义的selectAll,查询数据
连接数据库,获取会话sql session
public static SqlSession getSqlsession() throws IOException {
//获取配置资源文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=factory.openSession();
return sqlSession;
}
// 测试用例运行开始前,获取session
@BeforeTest
void setUp() throws IOException {
logger = Logger.getLogger(this.getClass());
session = getSqlsession();
client = new RunAutoTest();
}
在Test中执行查询语句:
@Test
void selectAllShipperTest() throws IOException {
SqlSession session = DataPrepareTest.getSqlsession();
ShipperInterfaceDTO dto = session.selectOne("selectAll", "ZA01");
logger.info(dto.toString());
}
selectOne方法中调用mapper中配置好的查询语句id=selectAll
,同时传一个参数ZA01
,返回的数据会根据设置好的映射关系自动转化为ShipperInterfaceDTO
。
非关系型数据库:
- redis的操作
- mongoDB的操作