发表于: 2018-03-30 18:28:44

4 545


今天完成的事情

开始进行任务17——编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。

首先建立maven项目

建立maven项目的时候需要选择Archetype模版,我选择了maven-archetype-webapp,结果如下

Maven规定必须添加以下Source Folder:

src/main/resources

src/main/java

src/test/resources

src/test/java

默认建立的项目中提示缺少好几个文件夹如下图。

把上图中提示缺少的文件夹删除,然后点击add folder新建提示缺失的文件夹,最终效果如下

配置maven依赖

生成的pom.xml中默认添加了对junit的依赖,但是默认是3.8.1版本,需要修改成4以上版本,不然不支持注解。

在maven中配置了对Spring的依赖(使用4.3.9版本),maven就自动把需要的Spring相关jar包下载到maven配置的本地仓库中去。暂时依赖了如下jar包,当然下面的jar包也不是现在全都能用到,但够用了。后续用到其他Spring的模块再添加新的依赖即可。

1.  spring核心依赖——spring-core、spring-beans、spring-context

2.  spring dao依赖(提供JDBCTemplate)——spring-jdbc、spring-tx

3.  spring web依赖——spring-web、spring-webmvc

4.  spring test依赖——spring-test

然后配置Spring容器

首先配置Spring容器的xml文件,添加数据源、事务管理器等bean。Spring中有两种容器,ApplicationContext和BeanFactory,ApplicationContext 完全继承BeanFactory,而且他更加易用,所以使用ApplicationContext类型的Spring容器。该类型容器的配置文件一般命名为ApplicationContext.xml。把该文件放到maven中定义的专门用来存放配置文件的目录src/main/resources下。后面使用的使用直接使用ClassPathXmlApplicationContext来启动该Spring容器,编程如下

xml文件头配置如下

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

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

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

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

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

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

</beans>

因为下面使用了p命名空间来简化配置,所以上面文件头中需要添加

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

添加mysql驱动

<dependency>

      <groupId>mysql</groupId>

      <artifactId>mysql-connector-java</artifactId>

      <version>5.1.30-bin</version>

</dependency>

添加后貌似从远程仓库下载不下来,我单独下载jar包然后放到本地仓库的mysql\mysql-connector-java\5.1.30-bin目录下,就ok了。

配置数据源bean

有jdbc的不带连接池数据源DriverManagerDataSource,这里使用了带有连接池的dbcp数据源。配置方式如下

<bean id="dataSource"  class=org.apache.commons.dbcp.BasicDataSource destroy-method="close"

      p:driverClassName="com.mysql.jdbc.driver"

      p:url="jdbc:mysql://localhost:3306/test"

      p:username="root"

      p:password="root" />

需要在maven中配置依赖,查看官网commons-dbcp最新版是2.2.0,我实验了下使用2.2.0版本报错,官网上看貌似跟使用的jdbc版本有关,暂时不管了,切换成1.2.2就好使了。

<dependency>

       <groupId>commons-dbcp</groupId>

       <artifactId>commons-dbcp</artifactId>

       <version>1.2.2</version>

</dependency>

配置jdbcTemplatebean

需要把datasource注入其中

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"

      p:dataSource-ref="dataSource">

</bean>

关于事务管理

默认情况下,从数据源中获取的connection对象的事务是自动提交的,所以暂时不配置事务管理器,因为Spring的事务管理要学习的东西好多,自己还没学完所以暂时先不用了,以后再说。这里仅仅使用jdbctemplate对象执行sql语句操作,事务会自动提交。

mysql中的准备工作

mysql中test数据库中新建一个表student

create table student(

id int pramary key auto_increment,

name varchar(15),

address varchar(20)

);

明天计划的事情

 明天要针对今天设计的表格建立领域对象,以及使用jdbctemplate的dao编程。

遇到的问题

由于今天主要就是做配置工作,还没有实际编程,所以很多问题还没暴露出来。今天层让自己困扰的问题就是关于事务管理的。以前思考过这个问题,现在又看以前的笔记才把思路捋顺了。

如果使用Spring中配置的事务管理器模版进行事务管理,他的实现原理就是Spring aop。具体分为编程式和声明式两种,具体细节还没去深究。其关键点就是实现了事务管理和具体的sql语句执行的分离。即事务管理定义在service层,而四强语句提交定义在dao层,所以关键问题就是保证在service层中进行的事务管理操作,还在servic层中调用dao层进行sql语句执行这两个过程,要保证使用的是同一个connection对象,这样才能让分开的两个过程在此时又重新合并起来。

如果不使用事务管理器,对于事务按照默认处理,今天对于这块重新查阅思考了一番,想明白了执行事务提交回滚等操作最本质的依然是通过connection对象,而mysql的connection对象默认是自动提交事务的,所以在当前任务中不用配置事务了,后续所有jdbctemplate执行的每个sql语句操作都会被当作单独的事务自动提交的。

收获

通过今天按照思路一步步配置并在将来执行,感觉到还是要实战才能发现问题,以及加深对知识点的理解啊。好久没写日报了,以后要天天报!我看师兄目前进度也是任务一,我以后要跟紧师兄不掉队,坚持到底!


返回列表 返回列表
评论

    分享到