mybatis_plus
1.概念
https://baomidou.com/guide/
简化开发、提高效率而生
生成controller,service,dao,entity
2.搭建mp的开发环境(重点)
a.尽量清理一下自己的电脑
b.创建一个空的文件夹
尽量不要有中文和空格
c.拷贝maven仓库和插件
d.创建一个项目
spring initlizer
修改maven为自己的仓库
e.如果你的项目当中报波浪线
意味着你仓库里面相应的jar包没有下载下来
在仓库里面搜索以last结尾的文件 删除 重新rebuild项目
3.mp的使用(会写)
1.项目进行配置
a.添加依赖
mybatis-plus依赖
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok用来简化实体类-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
b.修改配置文件
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus
spring.datasource.username=root
spring.datasource.password=123456
c.创建一个数据库
182.92.234.71
root 123
d.编写一个实体映射类
package com.atguigu.entity;
import lombok.*;
@Data
@ToString
//全参构造函数
@AllArgsConstructor
//无参构造函数
@NoArgsConstructor
@EqualsAndHashCode
public class User {
private Long id;
private String name;
private int age;
private String email;
}
e.编写一个mapper接口
package com.atguigu.mapper;
import com.atguigu.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
}
2.查询所有的用户信息(出现的问题)
a.The server time zone value '����˹ TZ 7 ��ʱ��' is unrecognized
在url上添加 serverTimezone=GMT%2b8
b.No qualifying bean of type 'com.atguigu.mapper.UserMapper' available
在主类添加 @MapperScan("com.atguigu.mapper")
c.Loading class `com.mysql.jdbc.Driver'. This is deprecated
在配置文件修改 com.mysql.cj.jdbc.Driver
3.springboot版本的区别
a.1.5.x版本与2.x的区别
springboot1.5.x采用spring4
springboot2.x采用spring5.x(大量采用注解)
b.2.0.x版本与2.1.x的区别
最大区别就是时区
c.公司里面用什么版本
公司使用什么版本 你就使用什么版本
4.添加一个用户
a.id是自动生成的
b.id不能是基本数据类型 必须是对象类型
c.如果要打印SQL日志文件 需要在配置类添加
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
5.集群与分布式的区别
集群: 相同的代码/服务 部署在不同的机器上
分布式: 不同的代码/服务 部署在不同的机器上
4.分布式系统唯一ID生成方案汇总
https://www.cnblogs.com/haoxinyue/p/5208136.html
1.数据库自增长序列或字段
不可以 因为在分布式环境下会出现id重复的问题
2.UUID
88af3d57-6e4b-49a1-ae59-fee010811d80
可以实现 字符串太长 消耗空间 传输效率受到影响
3.Redis生成ID
利用incr incrby +步长(集群环境下机器的个数)
可以实现 额外增加一个组件
4.Twitter的snowflake算法
mp默认采用生成id策略就是它
5.利用zookeeper生成唯一ID
可以,分布式锁
6.mycat实现id的唯一性
5.mp主键策略
1.把Long类型转换为String
IllegalArgumentException: argument type mismatch
@TableId(type = IdType.ID_WORKER_STR) 匹配String类型
private String id;
@TableId(type = IdType.ID_WORKER) 匹配Long类型
private Long id;
2、AUTO 自增策略
(1)需要在创建数据表的时候设置主键自增
(2)实体字段中配置 @TableId(type = IdType.AUTO)
@TableId(type = IdType.AUTO)
private Long id;
要想影响所有实体的配置,可以设置全局主键配置
#全局设置主键生成策略
mybatis-plus.global-config.db-config.id-type=auto
6.mp的其他操作
1.自动填充
a.在User表中添加datetime类型的新的字段
b.在实体映射类添加对应字段 添加注解