我正在使用spring,mybatis plus和带有@MybatisPlusTest注解的单元测试。
我相信@MybatisPlusTest将帮助我构建嵌入式数据库服务器。
下面是Spring容器启动时与数据库相关的日志。
2023-06-08 10:36:02.187 INFO 1911 --- [ main] beddedDataSourceBeanFactoryPostProcessor : Replacing 'dataSource' DataSource bean with embedded version
2023-06-08 10:36:02.749 INFO 1911 --- [ main] o.s.j.d.e.EmbeddedDatabaseFactory : Starting embedded database: url='jdbc:h2:mem:e9cde56b-3395-44fb-8251-c79b0b36e653;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'
下面是schema-h2.sql
create table if not exists person
(
id int auto_increment primary key,
name varchar(50) not null,
age int not null
);
这是PersonMapper
@Repository
public interface PersonMapper extends BaseMapper<Person> {
@Select("select name, age from person")
public List<Map<String, Object>> selectCertainColumns();
}
在我调用personMapper.selectCertainColumns()
之后,我得到了一个List<Map<String, Object>> rows
,我想得到列name
的值:
预期值:
rows.get(0).get(“name”)
实际:
rows.get(0).get(“NAME”)
从JDBC URL with ignorecase is not working for H2 database connection,我明白我应该改变h2数据源bean的url如下:
jdbc:h2:mem:xxxx;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false;CASE_INSENSITIVE_IDENTIFIERS=TRUE
问题是:
无法修改用于构建嵌入式H2数据库的配置或url。
你能提供一些关于设置嵌入式H2数据库的提示吗?
任何建议都很感激。
1条答案
按热度按时间ccrfmcuu1#
实现此目的的一种方法是为test创建一个自定义配置,以覆盖@MybatisPlusTest提供的默认配置。您可以创建一个新的配置并使用@TestConfiguration对其进行注解。然后,您可以为嵌入式H2数据库定义一个bean,并使用所需的参数设置其JDBCURL。
例如,我为嵌入式H2数据库定义了一个bean,并使用所需的参数设置了它的JDBC URL:
CASE_INSENSITIVE_IDENTIFIERS=TRUE
之后,要在测试中使用自定义配置,请使用
@ContextConfiguration(classes = TestConfig.class)
注解测试类。我希望它能解决问题