
MybatisPlus框架
使用
application.yml配置文件
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/lessonplus?useUnicode=true&characterEncoding=UTF-8
username: root
password: xxxx
创建实体类
package cn.reviewsystem.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
public class Student {
private String studentNumber;
private String name;
private String sex;
private String phone;
private String email;
private String password;
private Date birthday;
private String slogan;
private String createTime;
private int roleId;
}
创建一个接口继承BaseMapper
package cn.reviewsystem.repository;
import cn.reviewsystem.entity.Student;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface StudentRepository extends BaseMapper<Student> {
}
测试
package cn.reviewsystem.repository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class StudentRepositoryTest {
@Autowired
private StudentRepository studentRepository;
@Test
void findAll(){
studentRepository.selectList(null).forEach(System.out::println);
}
}
常用注解
@TableName 映射数据库的表名
package cn.reviewsystem.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName(value = "tb_student")
public class Student {
private String studentNumber;
private String name;
private String sex;
private String phone;
private String email;
private String password;
private Date birthday;
private String slogan;
private String createTime;
private int roleId;
}
TableId 设置主键映射
INPUT 如果开发者没有手动赋值,则数据库通过自增的方式给主键赋值,如果开发者手动赋值,则存入该值。
AUTO默认就是数据库自增,开发者无需赋值。
ASSIGN_ID MybatisPlus自动赋值,雪花算法
ASSIGN_UUID 主键的数据类型必须是String,自动生成UUID进行赋值
TableField 映射非主键字段
value映射字段名
exist表示是否为数据库字段 true或false
select表示是否查询该字段
fill表示是否自动填充该字段,使用时需要创建自动填充处理器
package cn.reviewsystem.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
//Mybatis Plus自动填充处理器
//如果该字段加上@TableField(fill = FieldFill.INSERT) 会自动调用insertFill方法
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
}
}
Version 标记乐观锁,通过version字段来保证数据的安全性,当修改数据的时候,会以version作为条件,当条件成立的时候回修改成功。
@EnumValue 通用枚举类注解,将数据库字段映射成实体类的枚举类型成员变量
package cn.reviewsystem.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum StatusEnum {
ON(1,"开启"),
OFF(0,"未开启");
StatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
@EnumValue
private Integer code;
private String message;
}
配置文件application.yml
# 枚举包扫描 type-enums-package: cn.reviewsystem.enums
TableLogic 映射逻辑删除
1、数据表添加deleted字段
2、实体类添加注解
3、application.yml配置
global-config: db-config: logic-not-delete-value: 0 logic-delete-value: 1
Mybatis Plus代码生成器
导入相关依赖
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
启动类
package cn.reviewsystem;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class Main {
public static void main(String[] args) {
// 创建Generator对象
AutoGenerator autoGenerator = new AutoGenerator();
// 数据源
DataSourceConfig dataSourceConfig = new DataSourceConfig();
// 设置数据库类型
dataSourceConfig.setDbType(DbType.MYSQL);
// 设置数据库连接
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/lessonplus?useUnicode=true&characterEncoding=UTF-8");
// 设置用户名
dataSourceConfig.setUsername("root");
// 设置密码
dataSourceConfig.setPassword("xxxxxxx");
// 设置驱动
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
// 将数据源装入Generator对象
autoGenerator.setDataSource(dataSourceConfig);
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
// 设置生成的代码在哪个路径
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
// 设置是否自动打开文件夹
globalConfig.setOpen(false);
// 设置作者
// globalConfig.setAuthor();
//设置生成service包的名称
globalConfig.setServiceName("%sService");
autoGenerator.setGlobalConfig(globalConfig);
//包信息
PackageConfig packageConfig = new PackageConfig();
//设置副包存放地点
packageConfig.setParent("cn.reviewsystem");
//设置是否创建新的包存放
packageConfig.setModuleName("generator");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setMapper("mapper");
packageConfig.setEntity("entity");
autoGenerator.setPackageInfo(packageConfig);
// 配置信息
StrategyConfig strategyConfig = new StrategyConfig();
//是否使用lombok注解
strategyConfig.setEntityLombokModel(true);
//使用驼峰式命名法
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
autoGenerator.setStrategy(strategyConfig);
// 运行
autoGenerator.execute();
}
}
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果