• SpringBoot项目中使用MybatisPlus


    MybatisPlus的优点

    使用时注意事项:

    首先需要在spring boot启动类中添加@MapperScan注解,扫描Mapper文件夹。

    并且在POM文件引入坐标的时候不要同时引入Mybatis和Mybatis-Plus的坐标。容易出现版本差异不兼容。

    日志配置

    由于SQL的执行是不可见的,所以如果需要看SQL的执行,则需要进行日志配置。

    配置方法:在配置文件的Confident 中对Log-impl 进行配置。

    则可以通过Log进行SQL执行时结果的展示。

    自定义ID生成器

    在分布式系统中,通常需要唯一ID作为标识,所以我们需要全局唯一ID。

    且生成的ID要具备4个特点

    全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。

    趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。

    单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。

    信息安全:如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定URL即可;如果是订单号就更危险了,竞对可以直接知道我们一天的单量。所以在一些应用场景下,会需要ID无规则、不规则。

    所以我们通常采用UUID和SnowFlake的方法,且从3.3.0开始,默认采用雪花算法+UUID(不含下划线)

    雪花算法

    核心思想

    使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0,。

    优点

    毫秒数在高位,自增序列在低位,整个ID都是趋势递增的。

    不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也是非常高的。

    可以根据自身业务特性分配bit位,非常灵活。

    缺点

    强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态。
     

  • 相关阅读:
    麒麟信安的2023世界计算大会时刻
    聊聊我对敏捷项目交付的理解
    python学习笔记——初识列表
    SpringBootApplication注解
    FPGA片内ROM读写测试实验
    毅速丨为什么不锈钢材料在金属3D打印中应用广泛
    试剂盒和示踪剂—艾美捷FLIVO探针活体凋亡检测分析
    kubernetes6 (ingress)
    git rebase
    Nerviano Medical Sciences S.r.l.宣布与默克达成包含许可选择权的合作协议
  • 原文地址:https://blog.csdn.net/m0_66605858/article/details/133984217