发表于: 2018-03-31 22:45:39
2 511
今天完成的事情
学习手动提交和自动提交的对比
师兄提到需要思考,我上网查阅一番总结如下
自动提交
- 好处就是不用操心事务管理了,把每一条单独的sql语句都当作一个事务自动提交了
- 坏处就是无法保证数据完整性。比如从a账户向b账户转500块。从a账户扣除500块的语句执成功commit了,但随后向b账户转入500块的语句执行失败。那a账户白白损失500块找谁说理去?
手动提交
- 好处就是当一个事务中一个语句执行出错,整个事务都会回滚,保证了事务的一致性。
- 坏处也就是操作麻烦一点吧,别的没啥了吧。
任务1-17重新建立maven项目
原来使用的archetype不合适,自己查阅一番,然后重新建立一个项目,并且没有选择archetype模版


这样建立的maven项目自动带有基本必须的所有文件夹


编写实体对象
因为手动添加了带参数的构造函数,所以需要再添加无参的构造函数,后续方法中需要用到。


其他get和set方法没有截图。
编写dao
现在只有一个dao的实现类,所以就不定义dao接口了,直接定义实现类。如果存在实现同一dao接口的多个dao才有必要定义统一的接口吧。在dao中暂时定义了3个方法,分别是插入一条数据,根据id获取数据,以及获取所有数据。
代码如下


在Spring中注册dao
在代码中使用了注解
- 在StudentDao上使用@Repository把它定义为dao层部件
- 在setJdbctemplate方法上使用@Autowired设置按照类型自动为该dao注入依赖的jdbctemplate对象
在Spring的配置文件中添加如下语句,用来扫描dao包下的所有类并自动注册到Spring容器
<context:component-scan base-package="com.yuuu.dao" />
同时因为这使用了Context命名空间,所以需要在Spring配置文件头中添加对应的声明。
编写service
因为不是web项目,所以我直接在service中添加main方法进行测试了。后面要学习junit专门测试,目前先跑起来看看效果。代码如下


测试
直接运行StudentService,调试了几个错误之后输出如下


今天的任务就到这里了,总体的项目目录就是


明天计划的事情
学习junit进行单元测试,然后要使用maven命令来进行编译啥的操作,而不是像今天直接使用eclipse进行编译运行了。
遇到的问题
今天花费了不少时间来理清了mysql关于语句的提交和回滚。我在日报开头理解的关于自动提交的坏处是正确的吗?麻烦师兄点评一下。
收获
具体编程敲代码才会发现问题啊,最后运行的时候发现很多细节上报错。特别是通过jdbctemplate执行sql语句,作为字符串类型本身需要放到双引号中,而sql语句内部还可能涉及到引号,一定要注意语法正确,今天调试好几次就是因为这个原因报错。
评论