zoukankan      html  css  js  c++  java
  • 【MySQL】Tinyint 类型问题

    下发字段:

    `DISTRIBUTION_STATUS` tinyint(1) DEFAULT '0' COMMENT '下发状态,0未下发,1已下发,2已作废',

    Mybatis封装之后日志打印也确实是0数字:

    <==    Columns: PART_NO, PART_NAME, PART_NAME_EN, UNIT_CODE, MIN_PACKAGE, APPLICABLE_VEHICLE_TYPE, MODEL, QUANTITY_PER_CAR, PROVIDER_CODE, PROVIDER_NAME, PLAN_PRICE, CLAIM_PRICE, LIMIT_PRICE, NOT_TAX_INSTRUCT_PRICE, COST_SALES_PRICE, PRICE_ADD_RATE, IS_BATCH_OUT, PART_STATUS, IS_UNSAFE, IS_BACK, IS_C_SALE, IS_C_PURCHASE, IS_BATTERY, IS_DELETED, PART_VEHICLE_MODEL, IS_TRIPLE_GUARANTEE, IS_CLAIM, DISTRIBUTION_STATUS, IN_AMOUNT, REMARK, SUGGEST_RETAIL_PRICE_TAXED
    <==        Row: TEST-PART-NO-20, , null, null, 0.0000, 1003, 1003, 1, null, null, 51.5500, 424994.7600, 91.5500, 91.5500, 842876.2200, 0.0000, 10041001, 10041001, 10041001, 10041001, 10041001, 10041001, 10041001, 0, null, 10041001, 10041001, 0, 521564.5000, 这是备注信息333, 487138.6400

    但是返回到前端的JSON数据就不是了:

    {
      "resultCode": 200,
      "errMsg": null,
      "elapsedMilliseconds": 0,
      "data": {
        "records": [
          {
            "IS_TRIPLE_GUARANTEE": 10041001,
            "PART_STATUS": 10041001,
            "IS_DELETED": 0,
            "PART_NO": "TEST-PART-NO-20",
            "APPLICABLE_VEHICLE_TYPE": "1003",
            "MIN_PACKAGE": 0,
            "IS_CLAIM": 10041001,
            "PRICE_ADD_RATE": 0,
            "LIMIT_PRICE": 91.55,
            "PART_NAME": "",
            "PLAN_PRICE": 51.55,
            "IS_C_SALE": 10041001,
            "DISTRIBUTION_STATUS": false,
            "IS_BATCH_OUT": 10041001,
            "REMARK": "这是备注信息333",
            "PART_NAME_EN": null,
            "PROVIDER_NAME": null,
            "UNIT_CODE": null,
            "IS_BATTERY": 10041001,
            "IS_UNSAFE": 10041001,
            "MODEL": "1003",
            "QUANTITY_PER_CAR": "1",
            "NOT_TAX_INSTRUCT_PRICE": 91.55,
            "CLAIM_PRICE": 424994.76,
            "IN_AMOUNT": 521564.5,
            "IS_C_PURCHASE": 10041001,
            "SUGGEST_RETAIL_PRICE_TAXED": 487138.64,
            "COST_SALES_PRICE": 842876.22,
            "PROVIDER_CODE": null,
            "IS_BACK": 10041001,
            "PART_VEHICLE_MODEL": null
          },

    我的解决办法是用map的computeIfPresent方法处理:

    maps.forEach(map -> map.computeIfPresent("DISTRIBUTION_STATUS", (k, v) -> {
        if (v.equals(true)) return 1;
        else if (v.equals(false)) return 0;
        return v;
    }));

    虽然显示是0,但是可能Java里面JDBC封装成了TRUE & FALSE,

    这里用equals方法做了个判断,让值重新覆写一遍,但是2的情况应该是正常的

    这里试试看看:

    UPDATE tm_part_info SET DISTRIBUTION_STATUS = 2 WHERE PART_NAME = '测试配件19'

     结果是可以的,那就说明1和0会和TRUE & FALSE 匹配上,要么就是框架做了自动装箱的处理

    其他值则正常返回

  • 相关阅读:
    JSTL之迭代标签库
    java中的IO流
    浅谈代理模式
    TreeSet集合
    网络编程之UDP协议
    Java中的多线程
    Java中的面向对象
    JavaScript 函数表达式
    JavaScript 数据属性和访问器属性
    JavaScript 正则表达式语法
  • 原文地址:https://www.cnblogs.com/mindzone/p/15563444.html
Copyright © 2011-2022 走看看