把原数据库的表名由user改为t_user,在运行就会报错,原因是找不到表名为user的表
修改实体类User
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
//所有无参构造和get方法和set方法还有哈希库方法注解(lombok)
//有参构造方法注解(@AllArgsConstructor)
@Data
//设置实体类所对应的表名
@TableName("t_user")
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
运行成功
第二种方式
修改application.yml文件
spring:
#配置数据源的信息
datasource:
#配置数据源的类型
type:
#配置数据库的各个信息
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password: '011012'
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#配置Mybatis-plus的全局变量
global-config:
db-config:
#来设置实体类对应表的统一前缀
table-prefix: t_
将该属性对应的字段指定为主键
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
//所有无参构造和get方法和set方法还有哈希库方法注解(lombok)
//有参构造方法注解(@AllArgsConstructor)
@Data
//设置实体类所对应的表名
//@TableName("t_user")
public class User {
@TableId
//将该属性对应的字段指定为主键
private Long id;
private String name;
private Integer age;
private String email;
}
如果表中主键是uid,而你编辑器自定义的主键是id,那么编辑器会帮你自动把id对应uid吗?答案是不会,我们可以通过TableId注解的value属性来设置
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
//所有无参构造和get方法和set方法还有哈希库方法注解(lombok)
//有参构造方法注解(@AllArgsConstructor)
@Data
//设置实体类所对应的表名
//@TableName("t_user")
public class User {
//将该属性对应的字段指定为主键
@TableId(value = "uid")
//@TableId注解的value属性用于指定主键的字段
private Long id;
private String name;
private Integer age;
private String email;
}
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
//所有无参构造和get方法和set方法还有哈希库方法注解(lombok)
//有参构造方法注解(@AllArgsConstructor)
@Data
//设置实体类所对应的表名
//@TableName("t_user")
public class User {
//将该属性对应的字段指定为主键
@TableId(value = "uid",type = IdType.AUTO)
//@TableId注解的value属性用于指定主键的字段
//@TableId注解的type属性用于设置主键的生成策略(一定要开启自增)
//最终插入的主键不再是雪花算法生成的
private Long id;
private String name;
private Integer age;
private String email;
}
若主键不开启自增长,则报错信息如下
这时候运行插入数据的test方法
spring:
#配置数据源的信息
datasource:
#配置数据源的类型
type:
#配置数据库的各个信息
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password: '011012'
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#配置Mybatis-plus的全局变量
global-config:
db-config:
#来设置实体类对应表的统一前缀
table-prefix: t_
#设置统一的主键生成策略
id-type: auto
把表中的name改为user_name,在运行就会报错,这时候可以用到注解@TableField(但是若实体类中的name改为username,即使不需要注解也可以运行)
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
//所有无参构造和get方法和set方法还有哈希库方法注解(lombok)
//有参构造方法注解(@AllArgsConstructor)
@Data
//设置实体类所对应的表名
//@TableName("t_user")
public class User {
//将该属性对应的字段指定为主键
@TableId(value = "uid",type = IdType.AUTO)
//@TableId注解的value属性用于指定主键的字段
//@TableId注解的type属性用于设置主键的生成策略(一定要开启自增)
private Long id;
@TableField("user_name")
//指定属性所对应的字段名
private String name;
private Integer age;
private String email;
}
逻辑删除注解
在表中添加属性is_deleted,默认值为0
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
//所有无参构造和get方法和set方法还有哈希库方法注解(lombok)
//有参构造方法注解(@AllArgsConstructor)
@Data
//设置实体类所对应的表名
//@TableName("t_user")
public class User {
//将该属性对应的字段指定为主键
@TableId(value = "uid",type = IdType.AUTO)
//@TableId注解的value属性用于指定主键的字段
//@TableId注解的type属性用于设置主键的生成策略(一定要开启自增)
private Long id;
@TableField("user_name")
//指定属性所对应的字段名
private String name;
private Integer age;
private String email;
@TableLogic
private Integer isDeleted;
}