怎么使用hsqldb 和 mybatis 构造单元测试
Posted MaXianZhe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么使用hsqldb 和 mybatis 构造单元测试相关的知识,希望对你有一定的参考价值。
项目是使用spring + mybatis的项目
下面说下配置怎么写:
spring中这样写:
<jdbc:embedded-database id="dataSource"> <jdbc:script location="classpath:/test/vmdb.script"/> </jdbc:embedded-database> -- 关键是这句 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 --> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:com/suning/rdrs/admin/mapping/*.xml" /> </bean> <!-- 配置扫描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 扫描com.suning.rdrs.admin.dao这个包以及它的子包下的所有映射接口类 --> <property name="basePackage" value="com.suning.rdrs.admin.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean>
单元测试的构造内存数据库的写法
private Connection conn; @Before public void before(){ //使用"spring.xml"和"spring-mybatis.xml"这两个配置文件创建Spring上下文 ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"/test/spring.xml","/test/conf.xml"}); //从Spring容器中根据bean的id取出我们要使用的userService对象 userService = (ITaskService) ac.getBean("taskService"); try { conn = DriverManager.getConnection("jdbc:hsqldb:mem:rdrs","sa",""); //启动内存数据库 rdrs,用户名sa 密码空 } catch (SQLException e) { } }
另外贴上脚本语句,虽然号称兼容,但是兼容不是那么好
INDEX index_taskname (TASKNAME,USERNAME) 这样的不兼容
COLUMN_PAIR text character set utf8 , text指定字符集不兼容
SET DATABASE SQL SYNTAX MYS TRUE; -- 兼容mysql
CREATE TABLE TASK (
ID INT(10) NOT NULL auto_increment,
TASKNAME varchar(150) NOT NULL,
USERNAME varchar(150) NOT NULL,
STATUS varchar(20) NOT NULL,
TASK_TYPE varchar(20) NOT NULL,
GMT_CREATE varchar(80) NOT NULL,
GMT_START varchar(80) NOT NULL,
PRIMARY KEY (ID),
) ;
剩下的就是单纯mybatis的东西了,单元测试就很好写了
以上是关于怎么使用hsqldb 和 mybatis 构造单元测试的主要内容,如果未能解决你的问题,请参考以下文章