zoukankan      html  css  js  c++  java
  • mybatis-plus id主键生成的坑

    转 https://blog.csdn.net/qq_34208844/article/details/88819467

    简要说明
    由于mybatis-plus会自动插入一个id到实体对象, 不管你封装与否, 所以有时候导致一些意外的情况发生

    默认是生成一个长数字字符串(编码不同可能结尾带有字母)

    错误:
    ested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.xxx' with value '1110423703487479810' Cause: java.lang.IllegalArgumentException: java.lang.ClassCastException@14041406


    大致就是由于自动生成了一个id1110423703487479810, 但是无法放入到integer中

    解决方案一

    1. 修改id字段类型
      将id字段类型改为long, 这样就能保证有足够位数放入生成的id

    2. 调整数据库id字段类型
      将数据库的id字段的长度(改为20位)

    解决方案二

    如果想要使用id自增的, 就需要把mybatis-plus这个id生成的功能给关掉

    添加注解
      在id字段上加上如下注解即可

    @TableId(value = "id",type = IdType.AUTO)


    其他type类型介绍
      AUTO : AUTO(0, “数据库ID自增”),
      INPUT : INPUT(1, “用户输入ID”),
      ID_WORKER : ID_WORKER(2, “全局唯一ID”),
      UUID : UUID(3, “全局唯一ID”),
      NONE : NONE(4, “该类型为未设置主键类型”),
      ID_WORKER_STR : ID_WORKER_STR(5, “字符串全局唯一ID”);
    ————————————————
    原文链接:https://blog.csdn.net/qq_34208844/article/details/88819467

  • 相关阅读:
    日期正则表达式yyyyMMdd
    Markdown语法
    su: Authentication failure问题
    Git初始配置
    layui的layer.open()方法查看缩略图 原图缩放
    入驻博客园三年
    php学习笔记之动态生成一组单选button
    opencv直方图拉伸
    c++ 中const的使用
    LeetCode131:Palindrome Partitioning
  • 原文地址:https://www.cnblogs.com/personsiglewine/p/14780174.html
Copyright © 2011-2022 走看看