zoukankan      html  css  js  c++  java
  • mybatis的update使用选择

      更新后台设置时,会分多个页面更新同一个表中的数据,愿想是尽量减少sql请求数据量并且减少重复代码.

    比如博客园的:

    假如只有一个用户信息表,这样的话每个页面只更新部分字段.

    这种情况下的更新推荐在xml写多个udpate对应多个页面.

    不能用自动生成的update也尽量不要用updateSelective.

    首先要做的是不需要update的字段移出xml,比如createTime

    1.普通update的适用场合

    单页面更新全部字段,有需要为null时也进行更新的字段.

    如果个人信息页面有个选填的生日字段

    2.updateSelective的使用场合

    单页面或者多页面,有为null时不进行更新的字段.

    如果个人信息页面有个选填的生日字段,不填的话应该是null,因为datetime不能插入‘‘‘’’的.

    这种情况下单页面可以用updateSelective,多页面不能用

    因为单页面可以在updateSelective中加一个没有<if test>更新字段,这样可以在更新时决定插入null

    但是多页面更新,即使加了一个没有if test的更字段,页面1更新birthday,页面2不更新,

    页面2更新的时候一样会把birthday改成null

    所以用updateSelective的时候需要考虑可为空并且不为外键的字段,如果这张表中只有外键可为空,那么使用updateSelective没问题.

    一般来说,字符串类型的字段尽量设置为not null,datetime这种不能设置为空字符的,只能选择自定义update了.

    3.多个自定义update的使用场合

    场合:多页面更新且有为null时也进行更新的字段,比如生日.

    缺点就是需要筛选出对应的字段到不同的update中,稍微费点时间,多写了一点代码.

     4.重复代码和sql请求数据量的对比

    如果多页面更新,除了外键外都是not null字段,可以适用updateSelecticve也可以用多个update

    如果后续维护添加非外键not null字段的可能性较大,就拆分成多个sql.

    后期如果添加了一个字段,用updateselective和多个update都是

    后台在xml mapper中加一个字段,pojo中加一个字段,基本工作量差不多.

    5.外键更新

    如果外键可以为null那就不加<if test>,比如商品分类的parent,最顶层的分类的parent为null

    not null的外键,就加<if test>

     

  • 相关阅读:
    【转载】产品经理如何行之有效的提高执行力
    【转载】20个2013年最值得关注的网页设计趋势
    【转载】HTTP协议详解
    工作一年的心得与体会
    【转载】什么是SVG
    【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
    【转载】前台页面优化全攻略-系列博文
    flink的checkpoint
    HBase概述
    牛客题霸--跳台阶题解
  • 原文地址:https://www.cnblogs.com/ptqueen/p/8444408.html
Copyright © 2011-2022 走看看