码迷,mamicode.com
首页 > 数据库 > 详细

使用Mybatis继承特性应对数据库变化

时间:2017-07-27 11:30:25      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:bbb   map   定义   数据库   mapper   ase   int   数据库表   大量   

数据库表结构变化,可以说是在开发过程中一个令人头痛的问题。问题头痛到很多程序员为了不变更表结构,宁愿在代码中写一堆“妥协”的代码也不愿去动表结构,结果造成问题越积越多,等到问题积累到表结构不得不改的时候,发现表结构的问题已经传播到很多其他的系统的模块了,已经不是通过修改一个模块就能简单解决的问题了,所以我的理解是表结构必要做的改动要早作,不要怕麻烦,因为现在一时避免的问题,会在未来引起指数倍增长的问题。

表结构一旦变化,那势必代码要进行大量的修改,这是不可避免的,我们能做的只能是让代码更加灵活来应对数据库的变化。这块Mybatis的继承特性可以一用。

经常使用mybatis-generator来生成对应数据库的model,dao和mapping,然后在上面的基础上修改,这样一旦数据库结构发生变化,想再用generator来重新生成代码会改动比较多,比较麻烦。这个问题可以使用mybatis的继承特性来解决。方案如下。

首先使用generator生成基类的model,dao,mapping: AttachSendTask AttachSendTaskMapper

Mybatis继承使用方式
model: public class AttachSendTaskExtend extends AttachSendTask
dao: public interface AttachSendTaskExtendMapper extends AttachSendTaskMapper
public List<AttachSendTaskExtend> doSelect(); // 使用子类作为查询结果对象

mapping: <mapper namespace="com.aaa.bbb.ccc.ddd.AttachSendTaskExtendMapper">
<resultMap id="BaseResultMap" type="com.aaa.bbb.ccc.ddd..AttachSendTaskExtend" extends="com.aaa.bbb.ccc.ddd.AttachSendTaskMapper.BaseResultMap">
// extends="${namespace}.${resultMap}"

这样表结构发生改变,重新使用generator生成基类的一套代码就行,自定义的虚拟属性和扩展属性,放在子类中,改变基类就应对了数据库表结构的变化。

使用Mybatis继承特性应对数据库变化

标签:bbb   map   定义   数据库   mapper   ase   int   数据库表   大量   

原文地址:http://www.cnblogs.com/wendelhuang/p/7243701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!