发表于: 2017-08-11 21:58:26
2 952
一、今天完成的任务
(一)log4j相关
1.修改代码
昨天测试的log4j指定输出到控制台的信息没有按我设置的格式:
.png)

检查发现是我代码打错了一个符号..修改后的样子:
.png)

2.新增输出位置到文件夹
①新增输出位置到文件夹,指定DEBUG级别以上的信息输出到控制台,ERROR级别以上的信息输出到控制台②并测试能否实现按每分钟重新生成一个新文件的功能。
.png)

②实现按每分钟重新生成一个新日志文件的功能
配置文件添加如下代码
log4j.appender.logDailyFile.DatePattern = '_'yyyy-MM-dd-HH-mm'.log'
将当前分钟的日志保存到logDailyFile.log文件,而前一分钟的日志文件名将被修改为logDailyFile_yyyy-MM-dd-HH-mm.log
.png)

(二)mabits+spring初级整合
今天完成了mabits+spring的整合,只有一个接口,查询所有数据,通过单元测试
先贴一张工程目录
.png)

1.数据库准备
新建数据库mybatis,新建表book
.png)

2.修改POM.xml,导入必要的jar包
3.添加数据库配置文件db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/mybatis?useUnicode\=true&characterEncoding\=utf-8&useSSL\=false
jdbc.username=root
jdbc.password=123456
4.创建实体类Book.java
5.创建接口BookDao.java
6.添加映射文件BookMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jnshu.spring.mybatis.dao.BookDao">
<select id="getAllBooks" resultType="Book">
select * from book;
</select>
</mapper>
7.添加mybatis配置文件MyBatisConfig.xml
把数据库连接的工作转移给ApplicationContext.xml
<typeAliases>
<package name="com.jnshu.spring.mybatis"/>
</typeAliases>
<mappers>
<!-- 注册BookMapper映射 -->
<mapper resource="com/jnshu/spring/mybatis/mapper/BookMapper.xml"/>
</mappers>
8.添加Spring的IoC容器ApplicationContext.xml
<context:property-placeholder location="classpath:db.properties"/>
<bean id="jdbcDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="jdbcDataSource"/>
<property name="configLocation" value="classpath:MyBatisConfig.xml"/>
</bean>
<bean id="dao" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.jnshu.spring.mybatis.dao.BookDao"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
9.添加日志配置文件log4j.xml
10.单元测试仍旧用的Junit4
@Test
public void test() throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
BookDao dao = ctx.getBean("dao",BookDao.class);
List<Book> books = dao.getAllBooks();
for(Book book:books){
System.out.println(book.getBookName());
}
assertNotNull(books);
}
测试结果
.png)

向控制台输出INFO级别信息和所有书名
(三)mybatis+spring整合升级
1.修改ApplicationContext.xml,弃用MyBatisConfig.xml
在MyBatisConfig中,需要注册mapper,如果有多个mapper,需要一一注册比较麻烦
.png)

通过修改ApplicationContext.xml,引入Spring的自动扫描,弃用MybatisConfig.xml,将其配置转移到ApplicationContext.xml中
蓝色为新增部分,红色为删除部分
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="jdbcDataSource"/>
<property name="typeAliasesPackage" value="com.jnshu.spring.mybatis"/>
<property name="mapperLocations" value="classpath:com/jnshu/spring/mybatis/*Mapper.xml"/>
<property name="configLocation" value="classpath:MyBatisConfig.xml"/>
</bean>
<bean id="dao" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.jnshu.spring.mybatis.dao.BookDao"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 自动扫描映射接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定sql回话工厂-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 指定基础包,即自动扫描com.jnshu.spring.mybatis.dao这个报下所有接口类 -->
<property name="basePackage" value="com.jnshu.spring.mybatis.dao"/>
</bean>
项目右键->Run As->Junit Test
.png)
.png)


总结:
结果很简单,但中间又是一堆错,不是输出字母就是传递的路径写错、类名写错...这些全是通过单元测试找出来的,由此可见单元测试是多么的重要。
再来说说mybatis+spring模式的好处,单独使用mybatis不用写实现类但是需要写对象类,单独使用spring不用去写对象类但是要写实现类。两者结
合可以发挥两者的优势,既不需要写对象类也不需要实现类,还可以弃用MyBatisConfig.xml。使得代码足够简短、优雅。
二、遇到的问题
跑单元测试各种报错
解决方法:按系统报错的位置返回去找错误的地方+百度找答案
三、收获
加深对spring和mybatis的理解
单元测试疯狂报错也算得上是锻炼自己找BUG了吧..
四、明天计划
1.学时使用spring-test跑单元测试
2.学会用注解
3.学习Debug调试
4.JDBCTemplate
五、进度
任务当前进度:任务1步骤20
任务开始时间2017.08.08
预计提交时间:2017.08.15
延期风险:
无
评论