月度归档:2015年12月

Spring Batch与MyBatis结合案例

看了一下博客,好几个月没写什么文章了。再不写,估计Google再也不来了!^_^闲话少说,这次的主题就讲一下Spring Batch。Spring Batch是Spring与Accenture的合作产物。作为前Accenture员工,感觉还是很亲切的。当然这是不是我在工作中技术选型的主要原因,更重要的是看中他的强大!
业务背景:
金融系统中有一种表叫台账表,这也是在接触这个领域后才知道的。而针对这张表,每天会进行定时全表遍历进行计算利息,费用等相关操作,也就是俗称的跑批。而跑批无非就是遍历循环表中数据再进行运算而已,可是一旦数据量上去了,很多看似简单的事情往往实现起来就不再是原先的逻辑了。一张上亿行数的表,查询出来,放到内存?那肯定是不明智的做法。当然应该采用游标或者分页的查询方式去实现更好的性能。而自己去写这类方法,其实并不难,如果只是简单地为了分页查询,确实可以自己去写一个。而之所以此处选择Spring Batch,是因为它不仅仅支持这一点特性,它能做的还有很多很多。
系统背景:
系统是典型的Java Web系统架构,Spring MVC与MyBatis。当然其他诸如服务治理,消息消费等就不赘述了,此处跟那些没有太大关系。而之所以有这篇文章的出现,正是因为MyBatis。因为在我使用过程中,查询大量资料,唯独与MyBatis集成的相关资料特别少。官方的jar包里也是针对ibatis做的封装(并且已经标注为废弃状态),而MyBatis自身针对Spring Batch做了分页Writer和Reader,此次我们主要就是用这两个类。外加用Java Config自动生成Step与Job方式,避免使用xml配置,对于有代码洁癖的人来讲,过多的配置文件感觉很乱很脏。 继续阅读