发表于: 2017-08-13 23:20:45

1 1052



一、今天完成的任务

(一)实现自动扫描接口和映射文件
昨天的问题师兄帮我解决了。因为写的第二个接口BookDao2.java是用的注解,而spring默认是不支持注解的,所以要修改spring的配置文件。添加注解支持
<context:annotation-config/>,单元测试通过,而且配置文件更加简洁了。
修改后的配置文件如下(数据源部分就不贴出来了):


(二)用JdbcTemplate操作数据库

1.导入必要的jar包
2.数据库准备。新建数据库jdbc,新建表格tb_book
 
3.创建实体类Book.java
4.配置数据库db.properties
5.配置beans.xml
 <beans>
       
       <context:property-placeholder location="classpath:db.properties"/>
   
       <!-- 数据源定义,使用dbcp数据源 -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
              ...省略...
       </bean>
       
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
              <property name="dataSource">
                     <ref bean="dataSource"/>
              </property>
       </bean>
       
       <bean id="dao" class="com.jnshu.jdbcTemplate.dao.impl.BookDaoImpl">
              <property name="template">
                     <ref bean="jdbcTemplate"/>
              </property>
       </bean>
</beans>
接下来,按官网要求尝试先写测试、再写接口,最后写实现类
6.先写一个查找所有数据的测试方法
7.再写接口
8.最后写实现类BookDaoImpl.java
9.运行单元测试
10.再添加其他方法的实现
       public List<Book> getAllBooks() {
              String sql = "select * from tb_book";
              return (List<Book>) template.query(sql,new BeanPropertyRowMapper(Book.class));
       }
       public List<Book> getBookById(long id) {
              String sql = "select * from tb_book where id = ?";
              return  template.query(sql, new Object[] {id},new BeanPropertyRowMapper(Book.class));
       }
       public List<Book> getBookByBookName(String bookname) {
              String sql = "select * from tb_book where bookname = ? ";
              return template.query(sql, new Object[] {bookname},new BeanPropertyRowMapper(Book.class));
       }
       public int addBook(Book book){
              String sql = "insert into tb_book(bookname,price) values(?,?)";
              return template.update(sql, new Object[]{book.getBookname(),book.getPrice()});
       }
11.结果展示:
id从3直接跳到15了,因为中间进行很多插入、删除操作,也说明了用Junit4测试会对数据库进行永久性的修改。针对此,改用spring-test测试,spring-test会回滚对数据库的修改。


(三)Spring-test+JUit4
1.添加spring-test.jar包
2.要使用Spring-tset测试,则测试类必须继承AbstractTransactionalJUnit4SpringContextTests这个类
3.然后要用调用SpringJUnit4ClassRunner这个运行器
4.另外可以用注解@ContextConfiguration和@Reshource减少硬编码部分,修改后的测试类代码如下
5.运行测试,结果如下

id从15增加到18了,因为我回滚没有没有设置好,在网上找了两篇文章,没看懂- -,明天再尝试一下


二、遇到的问题

spring-test的注解不知道怎么弄,百度到的结果很难看懂,明天问一下师兄


三、收获

解决了昨天遗留的问题,并会用JDBCTemplate操作数据库,会使用Spring-test跑测试。


四、明天的计划

1.向师兄请教Spring-test回滚是怎么实现的

2.开始部署线上服务器


五、进度

当前任务进度 步骤21

任务开始时间 2017.08.08

预计提交时间 2017.08.15

延期风险:无

http://task.ptteng.com/zentao/project-task-300.html




返回列表 返回列表
评论

    分享到