MybatisPlus学习笔记(一)

news/2023/6/9 19:49:14

快速入门

  • 步骤
    • 1.创建数据库
    • 2.创建user表
    • 3.编写项目,初始化项目,使用springboot初始化
    • 4.导入依赖
      • 说明:我们使用mybatis-plus可以节省我们大量的代码,尽量不要同时导入mybatis和mybatisplus,有版本差异
    • 5.连接数据库
    • 6.pojo-dao(连接mybatis,配置mapper.xml)
  • 思考问题
    • SQL谁帮我们写的?Myabtis-plus都写好了
    • 方法哪里来的?Myabtis-plus都写好了

配置日志

我们所有的sql现在是不可见的,我们希望知道它是怎么执行的,所以我们必须要看日志

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

主键生成策略

默认ID_WORKER全局唯一ID

  • 分布式系统唯一id生成:www.cnblogs.com/haoxinyue/p/5208136.html
  • 雪花算法:snowflake是twitter开源的分布式ID生产算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0.可以保证几乎全球唯一。

主键自增

  • 我们需要配置主键自增
  • 1.实体类字段上@TableId(type=IdType.AUTO)
  • 2.数据库字段一定要是自增
  • 3.再次测试插入即可

其他的源码解释

public enum IdType{AUTO(0), //数据库id自增NONE(1)//未设置主键INPUT(2)//手动输入ID_WORKER(3),//默认全局唯一idUUID(4),// 全局唯一id uuidID_WORKER_STR(5);//ID_WORKER 字符串表示法
}

自动填充

  • 创建时间、修改时间。这些个操作一遍都是自动化完成的,我们不希望手动更新!
  • 阿里巴巴开发手册:所有的数据库表:gmt_create、gmt_modified几乎所有的表都要配置上,而且需要自动化
  • 方式一:数据库级别
    • 1.在表中新增字段create_time、update_time
    • 2.再次测试插入方法,我们需要先把实体类同步
    • 3.再次更新查看结果即可
  • 方式二:代码级别
    • 1.删除数据库的默认值,更新操作
    • 2.实体类字段属性上需要增加注解
    • 3.编写处理器来处理这个注解即可
    • 4.测试插入
    • 5.测试更新、观察时间即可

乐观锁

  • 乐观锁:顾名思义,十分乐观,它总是认为不会出现问题,无论干什么不去上锁。如果出现了问题,再次更新值测试
  • 悲观锁:十分悲观,它总是认为总是出现问题,无论干什么都会上锁,再去操作
  • 乐观锁实现方式
    • 取出记录时,获取当前version
    • 更新时,带上这个version
    • 执行更新时,set version = newVersion where version = oldVersion
    • 如果version不对,就更新失败
  • 测试MP的乐观锁插件
    • 1.给数据库中增加version字段
    • 2.我们实体类加对应的字段
    • 3.注册组件
    • 4.测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4555875.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Idea里用gradle构建第一个springboot项目遇到的问题

1.问题 最近研究Gradle进行项目构建,记录下第一次使用Gradle遇到的兼容性问题 采取idea里创建springboot项目的方式创建gradle project,springboot版本2.7.2,idea为2019.2.4版本,创建项目后自动进行Gradle配置后遇到这个报错信息. FAILURE: Build failed with an exception.* …

Appium的Capability配置各个数值的获取方法

如图,Appium的Capability配置需要以下数值 首先介绍各个字段的含义 关键词描述实例platformName你要测试的手机操作系统iOS, Android, 或 FirefoxOSdeviceName使用的手机类型或模拟器类型iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android Emulat…

曾经的iOS 9,为前端世界都带来了些什么?

2015 年 9 月,Apple 重磅发布了全新的 iPhone 6s/6s Plus、iPad Pro 与全新的操作系统 watchOS 2 与 tvOS 9(是的,这货居然是第 9 版),加上已经发布的 iOS 9,它们都为前端世界带来了哪些变化呢?…

JavaScript面向对象精要(二)

构造函数和原型对象 构造函数也是函数,用new创建对象时调用的函数,与普通函数的一个区别是,其首字母应该大写。但如果将构造函数当作普通函数调用(缺少new关键字),则应该注意this指向的问题。 var name …

iOS 9,为前端世界都带来了些什么?「译」

2015 年 9 月,Apple 重磅发布了全新的 iPhone 6s/6s Plus、iPad Pro 与全新的操作系统 watchOS 2 与 tvOS 9(是的,这货居然是第 9 版),加上已经发布的 iOS 9,它们都为前端世界带来了哪些变化呢?…

CodeForces 219D Choosing Capit

题目链接:http://codeforces.com/contest/219/problem/D 题目大意: 给定一个n个节点的数和连接n个节点的n - 1条有向边,现在要选定一个节点作为起始节点,从这个点出发需要能走到其余每个节点,途中必然要调整有向边的方…

拆机记录01——游戏手柄

参考链接&#xff1a; <---------------------------------------------------------------> 打开了一个游戏手柄&#xff0c;其实里面也比较粗糙。 <--------------------------------------------------------------->

nmon命令中各个参数(按c/m/d等)的意思

进入Linux或者xshll #nmon 进入工具中 可以看到按下什么建去看到的监控内容 按下c键&#xff0c;进行展示或者隐藏cpu占用率的统计情况 按下m键&#xff0c;进行展示或者隐藏内存使用情况 按下d键&#xff0c;进行展示或者隐藏磁盘I/O速度、传输和读写比率 按下r键&…