发表于: 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 环境的测试步骤
评论