快速入门
- 步骤
- 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.测试