• 请不要在回答技术问题时复制粘贴 AI 生成的内容
movq
V2EX  ›  程序员

MyBatisGenerator 生成的 insert、InsertSelective 有什么区别?

  •  
  •   movq · Jan 15, 2023 · 2096 views
    This topic created in 1392 days ago, the information mentioned may be changed or developed.

    看文档说 insertSelective 不插入为 null 的项,但就算在 insert 里面插入,为 null 的项不也是不会插入吗? 如果意思是 insertSelective 为 null 的项会用自动生成的值,那难道 insert 插入时 null 项不会用自动生成的值?

    class User{
      Integer id;
      String name;
      String address;
    }
    

    那么insert(User{null,"Jack",null}和insertSelective(User{null,"Jack",null}有什么区别?

    8 replies  •  2023-01-16 08:45:46 +08:00
    Oktfolio
    Oktfolio
    Jan 15, 2023
    1
    User{null,"Jack","@email.com"}

    INSERT INTO `user`(field, name, email) VALUES(null, 'Jack', '@email.com')

    INSERT INTO `user`(name, email) VALUES('Jack', '@email.com')

    这样的区别
    movq
    movq
    OP
    Jan 15, 2023
    2
    @Oktfolio 如果没有设置自增主键,那么这两种插入的结果 id 都是 null 。如果设置了自增主键,这两者的 id 都是自增主键,区别在哪里呢?
    Oktfolio
    Oktfolio
    Jan 15, 2023
    3
    @movq field 为 not null 时前者插不进去(有自增主键除外); field 有 default value 时前者插进去为 null 而不是 default value ;设置了自增主键时,执行结果都是自增主键。
    kingwrcy
    kingwrcy
    Jan 15, 2023
    4
    你为何不看一眼生成的 SQL ,不就知道区别在哪里了?
    movq
    movq
    OP
    Jan 15, 2023
    5
    @Oktfolio field 为 not null 时两者都不能插入
    Oktfolio
    Oktfolio
    Jan 15, 2023
    6
    @movq 噢对,后者加上 default value
    Oktfolio
    Oktfolio
    Jan 15, 2023
    7
    field 为 not null 时均插不进去(有自增主键除外);
    field 有 default value 时前者插进去为 null 而不是 default value ;
    field 为 not null 且有 default value 时前者插不进去,后者为 default value ;
    设置了自增主键时,执行结果都是自增主键。
    N46LzUbYtD2y37RN
    N46LzUbYtD2y37RN
    Jan 16, 2023
    8
    #4 早已道明`你为何不看一眼生成的 SQL ,不就知道区别在哪里了?`

    #1
    INSERT INTO `user`(field, name, email) VALUES(null, 'Jack', '@email.com')
    INSERT INTO `user`(name, email) VALUES('Jack', '@email.com')

    说白了就是 null 值的语义到底是 作为字段列表的 null 值 还是 不在字段列表中指定他
    而数据库层对您没指定的字段赋值是 field default value ,如果没有 field value 会返回 ERROR
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1431 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 16:12 · PVG 00:12 · LAX 08:12 · JFK 11:12
    ♥ Do have faith in what you're doing.