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类型的数据,不然逆向工程的时候也是让人头大,还会出现各种问题,能够工具生成的代码,非要让人手动修改,当然会出现各种问题

  • 相关阅读:
    C语言的特点与缺点
    C语言的特点与缺点
    HDU1234 开门人和关门人
    HDU1234 开门人和关门人
    B00014 C++实现的AC自动机
    B00014 C++实现的AC自动机
    HDU4716 A Computer Graphics Problem
    HDU4716 A Computer Graphics Problem
    I00029 C语言程序-打印九九乘法表
    I00029 C语言程序-打印九九乘法表
  • 原文地址:https://www.cnblogs.com/shenyanrushang/p/10852472.html
Copyright © 2011-2022 走看看