zoukankan      html  css  js  c++  java
  • 怎么使用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的东西了,单元测试就很好写了

  • 相关阅读:
    nignx重启启动关闭
    Tomcat日志配置
    误删除了mssql的表。 使用命令:drop table xxxx
    使用redis-cli定时执行指定命令
    在crontab中动态写日志
    循环日期的shell
    CountDownLatch、CyclicBarrier、Semaphore 区别
    log4j 知识点
    slf4j-api、slf4j-log4j12、log4j 之间是什么关系?
    HTTP协议中的长连接、短连接、长轮询、短轮询
  • 原文地址:https://www.cnblogs.com/juniorMa/p/7163091.html
Copyright © 2011-2022 走看看