导入jar包

导入spring-test的jar包,就可以像开发环境使用autowried一样使用了,spring test要求junit版本在4.12以上

  1. <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-test</artifactId>
  5. <version>5.2.15.RELEASE</version>
  6. <scope>test</scope>
  7. </dependency>
  8. <dependency>
  9. <groupId>junit</groupId>
  10. <artifactId>junit</artifactId>
  11. <version>4.12</version>
  12. <scope>test</scope>
  13. </dependency>

SqlsessionTeamplate

配置一个SqlSessionTeamplate bean对象,使其支持批量操作

  1. <!--SqlSessionTemplate bean 可以执行批量操作-->
  2. <bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSession">
  3. <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
  4. <constructor-arg name="executorType" value="BATCH"/>
  5. </bean>

注意,当executorType的属性设置为”BATCH”时,表示可以批量更新,但是update的返回值永远是-2147482646

开启日志功能

指定 MyBatis 所用日志的具体实现,未指定时将自动查找。

  1. <settings>
  2. <setting name="logImpl" value="LOG4J"/>
  3. </settings>

导入log4j的jar包

  1. <!-- https://mvnrepository.com/artifact/log4j/log4j -->
  2. <dependency>
  3. <groupId>log4j</groupId>
  4. <artifactId>log4j</artifactId>
  5. <version>1.2.17</version>
  6. </dependency>

在resource资源目录下,建立log4j的配置文件,详细说明:https://www.iteye.com/blog/shift8-1316802

  1. #省略根,只设置特定包的级别和目的地
  2. #log4j.rootLogger = [ level ] , appenderName, appenderName, …
  3. log4j.rootLogger=DEBUG,appender1
  4. #输出到控制台
  5. log4j.appender.appender1=org.apache.log4j.ConsoleAppender
  6. #设置输出样式
  7. log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
  8. #自定义样式
  9. #%m 输出代码中指定的消息
  10. #%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  11. #%r 输出自应用启动到输出该log信息耗费的毫秒数
  12. #%c 输出所属的类目,通常就是所在类的全名
  13. #%t 输出产生该日志事件的线程名
  14. #%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  15. #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  16. #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
  17. log4j.appender.appender1.layout.ConversionPattern=%d %p [%c] - %m%n
  18. #输出到文件(这里默认为追加方式)
  19. log4j.appender.appender2=org.apache.log4j.FileAppender
  20. #设置文件输出路径
  21. #【1】文本文件
  22. log4j.appender.appender2.File=c:/Log4JDemo07_Dao.log
  23. #设置文件输出样式
  24. log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
  25. log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n

测试类

@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class DatabaseTest {
    @Autowired
    DepartmentMapper departmentMapper;

    @Test
    public void  testCRUD(){
        int jerry = departmentMapper.insertSelective(new Department(null, "jerry"));
        System.out.println(jerry);
    }

}

spring test模拟MVC请求

@ContextConfiguration(locations = {"classpath:applicationContext.xml","classpath:spring-mvc.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class MvcTest {

    /**
     * 将IOC容器注入进来,需要添加@WebAppConfiguration
     */
    @Autowired
    WebApplicationContext webApplicationContext;

    // 模拟发送MVC请求
    MockMvc mockMvc;

    @Before
    public void initMockMvc(){
        mockMvc= MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

    @Test
    public void testEmpl() throws Exception {
        MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/empls")
                .param("pn", "1"))
                .andReturn();
        MockHttpServletRequest request = result.getRequest();
        PageInfo pageInfo = (PageInfo) request.getAttribute("pageInfo");
        System.out.println("总页数"+pageInfo.getPages());
        int[] nums = pageInfo.getNavigatepageNums();
        for (int i=0;i<nums.length;i++){
            System.out.print(" "+i);
        }
        List<Employ> list = pageInfo.getList();
        for (Employ employ : list){
            System.out.println(employ.getEmpId()+"===>name: "+employ.getEmpName());
        }
    }
}