发表于: 2017-06-22 10:23:24

2 1069


今天学习的内容:

使用 JDBCTemplate 编写 DAO:

网上了解到 JDBCTemplate 属于 Spring 框架的内容,所以到 Spring 官网下载到 Spring 的库文件,总共有十几个,分为好几个部分:

1.核心部分:beans core context expression 以及两个公共依赖库: common-logging log4j

2.Web:spring-web 等

3.AOP:spring-aop spring-aspects 等

4.持久化:spring-jdbc spring-tx spring-orm 等

5.JUnit:spring-junit

首先将核心部分导入到项目中,然后加入 spring-jdbc,开始编写相关数据库操作代码:

public class MyDaoImpl implements MyDaoInterface {

private static DriverManagerDataSource dataSource=null;

{

    dataSource = new DriverManagerDataSource();

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");

    dataSource.setUrl("jdbc:mysql:///xiuzhenyuan?useUnicode=true&characterEncoding=utf-8&useSSL=false");

    dataSource.setUsername("root");

    dataSource.setPassword("xu422326");

}

@Override

public void updateUsername(String oldName,String newName) {

// 实例化 JdbcTemplate 对象

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

    String sql = "update students set name=? where name=?";

    jdbcTemplate.update(sql, newName,oldName);

}

}

昨天日报中提到的 DAO 层为什么要 接口、实现分离,还是网上找到了一点答案,由于数据库访问的方式很多,最基本的有 JDBC ,昨天学的 Mybatis ,还有今天的 JDBCTemplate,DAO 层接口、实现分离的话,

在应用层可以声明 DAO 的接口,可以根据需要选择加载合适 DAO 实现。

配置 Spring:

Spring 的默认配置文件是 applicationContext.xml 以下配置的作用是将 MyDaoImpl 实例对象注入到 Spring 中

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns="http://www.springframework.org/schema/beans" 

xsi:schemaLocation="http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">

    <bean id="myDao" class="com.jdbc.MyDaoImpl"></bean>

</beans>

配置 JUnit:

如果需要在 Spring 环境下进行 JUnit 测试,则需要在创建的 JUnit 测试类中,进行相关的配置

参考:http://www.cnblogs.com/rainisic/archive/2012/01/22/spring_test_framework.html

@RunWith(SpringJUnit4ClassRunner.class) // 使用 Spring 中定义的测试运行期

@ContextConfiguration(locations = "classpath:applicationContext.xml") // 指定 Spring 容器配置文件

public class MyDaoTest extends AbstractJUnit4SpringContextTests { // 测试需继承 Spring 中定义的抽象类

@Resource

private MyDaoImpl myDao; 

@Test

public void testUpdateUsername() {

    myDao.updateUsername("胡玉周2", "暗灭2");

}

}

明天的计划:

  • 20.编写单元测试的代码,注意,你也可以尝试一下,先写单元测试的代码,再写接口,再写实现类。
  • 21.查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。

问题:

编写 DAO 时,书写到 jdbcTemplate.update(sql, "暗灭","胡玉周"); 这句代码时报如下错误:

The type org.springframework.dao.DataAccessException cannot be resolved. It is indirectly referenced from required .class files

Google 发现是缺少 Spring中的 spring-tx 库,导入后 OK

同样地后面 JUnit 整合 spring-test 后运行测试时也报错,也是缺少库导致。

收获:

1.今天学习了解到 Spring 的核心是 IOC 和 AOP,把它理解成一个容器,通过配置文件动态灵活地把业务中涉及的对象注入到 Spring 容器中;

原先的方式是各层自己创建需要的对象,整合 Spring 就将创建对象的操作反转至 Spring 容器。

2.初步了解在 JUnit 中进行 Spring 环境的测试步骤



返回列表 返回列表
评论

    分享到