zoukankan      html  css  js  c++  java
  • tkmybatis逆向工程关于tinyint的玄学问题

    数据库中存储的数据类型是tinyint(1)

    state tinyint(1) 状态0-未完成;1-待提交;2-待支付;3支付失败; 不为空

    tinyint(1)存储的时候会存储下面长度的数字

    但是在生成逆向工程的时候会生成为boolean类型

    做了下面的修改

      <result column="state" property="state" jdbcType="TINYINT" />

    将生成的实体类,返回类型修改为int类型

    但是这个时候出问题了,插入sql的时候自动将state存储为0

    哪怕我存储的时候是2,到数据库中也变成了0

    我这边找了下日志发现,实际插入调用mapper.insert的时候

    自动跳过了,我设置的state字段,inset自动剔除了这个字段,所以我封装对象,插入的时候相当于插入了0

    面对bug的我不由陷入了沉思.

    第一次排查

    state是后续添加的字段,我没有在新的参数上面加注解与数据库映射

    一脸的黑人问号,

    @Column(name = "state")

    添加完注解,继续debug,依旧出错

    第二次排查

     最后发现是DAO 与生成的实体类类型不一致,所以赋值失败,最后问题解决

    个人建议吧:tinyint(1)尽量只存bool类型的数据,不然逆向工程的时候也是让人头大,还会出现各种问题,能够工具生成的代码,非要让人手动修改,当然会出现各种问题

  • 相关阅读:
    Unix环境中的刷新
    C++ 的类型转换方法
    系统对信号的三种处理方式
    进程原语与线程原语的比较
    C和C++对带空参数列表的函数声明的不同处理
    函数指针
    字符串化的预处理器特征
    调试技巧
    信号产生的条件
    结构体大小问题
  • 原文地址:https://www.cnblogs.com/shenyanrushang/p/10852472.html
Copyright © 2011-2022 走看看