发表于: 2018-01-07 20:26:56
3 557
今天做的东西(其实还加上昨天半天功夫):
1.用Mybatis(非Spring)框架对任务一进行了重做;
2.用Spring JDBC Template对任务一进行了重做;
因为今天比较晚了,所以日报的说明简陋点,主要的东西我直接放github链接了,反正我的注释写的比较全...
先说Mybatis(非Spring):
和SM框架最大的区别就是Sqlsession的生命周期需要自己管理了,crud弄完统统要在最后加上close()方法,增加/更新/删除操作弄完还要在close()之前commit():
比如说:
我把这个步骤放在service层来管理了,另外要注意的是 Sqlsession对象的获得必须要在方法体里面,因为它的线程不是安全的。至于工厂,他是线程安全的,只要加载一次即可:
还有一点要注意的是,这里我也用了Druid连接池。这里有个坑,Druid的数据源和Mybatis的不兼容,需要用代替的方法解决:
ps:这里的driveClassName一定要写对,不然就不要写,反正Druid会自动去试,没有的话会加载默认的。
关于Spring JDBC Templ:
和SM框架主要的不同差在映射上,以及因此产生的数据获取方式,还有一堆异常...
这里获取主键的方法比较复杂,需要KeyHolder容器来存取。另外我在这里加了Lambda 表达式,具体的教程可以看这里:http://blog.csdn.net/haiyoung/article/details/52693212
还有动态sql的实现也比较复杂...因为数组不能随时随地增加长度并增加成员,所以必须有个容器作为中转,最后再拿出来,放到update方法里面。
部分代码(完整版的太长了):
还有最坑爹的是对象不存在,查询类方法抛出异常的问题。这里我采取了在DAO层捕获,然后作为运行中异常重抛,在main方法中日志记录的方法来解决这个问题(其实可以用List的对象去接收然后判断size的方法解决):
其他的细节在链接中。
明天要做的事情:应该是学习SpringMVC 开始任务二了。
今天的收获:对任务一的理解更深了。
评论