单体框架应用:2.表设计及mybatis逆向工程

按照阿里巴巴开发手册的要求,所有表必有三个字段:主键id,create_gmt,update_gmt. 我们公司没有强制要求,但基本上每张表必备的字段有主键id,del_flag,create_gmt,update_gmt,create_user,update_user,create_ip,update_ip这几个字段.
mybatis生成的实体类都手动去实现一个CommonSysDomain类:

public interface CommonSysDomain {
    void setUpdateTime(Date updateTime);

    void setUpdateIp(String updateIp);

    void setUpdateUser(String updateUser);

    void setCreateTime(Date createTime);

    void setCreateIp(String createIp);

    void setCreateUser(String createUser);

    void setDelflag(Integer delflag);

    void setId(String id);
}

然后配合手写的工具类即可一行完成ip,user,time的创建或修改(部分代码以防出错try一下,常规数据其实没必要try这一下)

public class CommonTableInfo {
    public static void modifyInfo(CommonSysDomain commonSysDomain, SysUserService sysUserService, HttpServletRequest request) {
        commonSysDomain.setUpdateTime(new Date());
        commonSysDomain.setUpdateIp(IpUtil.getIpFromRequest(request));
        String currentUserId = JWTRedisUtil.getTokenUserId(request);
        SysUser currentUser = sysUserService.queryById(currentUserId);
        commonSysDomain.setUpdateUser(currentUser.getUsername());
    }

    public static void createInfo(CommonSysDomain commonSysDomain, SysUserService sysUserService, HttpServletRequest request) {
        commonSysDomain.setDelflag(0);
        commonSysDomain.setId(UUIDUtil.getUUID());
        commonSysDomain.setCreateTime(new Date());
        commonSysDomain.setUpdateTime(new Date());
        commonSysDomain.setCreateIp(IpUtil.getIpFromRequest(request));
        commonSysDomain.setUpdateIp(IpUtil.getIpFromRequest(request));
        try {
            String currentSysUserId = JWTRedisUtil.getTokenUserId(request);
            SysUser currentSysUser = sysUserService.queryById(currentSysUserId);
            commonSysDomain.setCreateUser(currentSysUser.getUsername());
            commonSysDomain.setUpdateUser(currentSysUser.getUsername());
        } catch (Exception e) {
            commonSysDomain.setCreateUser("");
            commonSysDomain.setUpdateUser("");
        }
    }
}

/* ************************************************************************************* */
逆向工程应该是稳定的,每次生成的实体类和映射类应该都是一样的,然而今天遇到的问题,在使用Mybatis的updatebyprimarykeyselective方法时,竟然无效,也不报错,只返回int 0(更新成功的返回值为int 1),查资料后发现逆向实体类的文件里主键id缺少了注解@Id,导致方法失效.git回看了历史版本发现@Id最初版本有,但并没有人为手动去修改注解,只有可能是在修改数据库表结构后重新生成的实体类文件把原来的文件覆盖了。也可能是generatorConfig.xml配置出了差错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 雨 无论从哪个方向 飘来 我都会 在你身边
    夏荷衣阅读 242评论 0 3
  • 2017.8.27 星期日 晴 今天是孩子第一天返校的日子,同时给她换了新托辅。回来问了孩子,啥啥都挺...
    厦门路小学邵艺馨妈妈阅读 164评论 0 7
  • 这篇文章是来自一个理工科半书呆子,所以大概读起来不会有朗朗上口的感觉,却可能会被1234的标题吓跑。如果我的思维逻...
    还不晚阅读 486评论 1 1
  • 写给婆婆的一封信 亲爱的婆婆: 您好!当您读到我给您写的信时您正在医院,而我却在家里思念您。 今天早晨我吃...
    添淇阅读 520评论 0 1