springboot整合mybatis-plus rest风格后台开发 步骤和注意事项

本文介绍了如何在Spring Boot项目中集成Mybatis-Plus,并使用代码生成器自动生成实体、Mapper、Service等代码。详细步骤包括更新父版本号、添加相关依赖、配置代码生成器以及实现自动填充功能。同时,展示了实体类的注解用法,以及如何修改代码生成器生成的日期字段类型和Controller注解。
摘要由CSDN通过智能技术生成

一、添加依赖

1.需要修改父版本号为2.5.4

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version><!--修改父版本号为2.5.4-->
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

2.添加所需依赖

        <!--        数据库连接依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--        代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
            <scope>compile</scope>
        </dependency>
        <!--        mabatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--        引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

如果出现build里面如下代码报错

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>

在该代码下添加父版本号

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.4</version>

二、代码生成器

创建MyApp类,与Applacation启动类同级;

run main方法,可自动创建三层架构代码,具体解释在代码注释

public class MyApp {
    public static void main(String[] args) {
        FastAutoGenerator.create(//数据库配置
                        "jdbc:mysql://localhost:3306/java_web",
                        "root",
                        "123457")
                // 全局配置
                .globalConfig(builder -> {
                    builder.author("Ray") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .outputDir("G:\\java_work\\mybatisplus_01\\src\\main\\java"); // 指定输出目录
                })
                // 代码生成包配置
                .packageConfig(builder -> {
                    builder.parent("com.ray") // 设置父包名
                            .controller("controller") //controller
                            .service("service")       //service
                            .serviceImpl("service.impl")//serviceImpl
                            .mapper("mapper")
                            .xml("mapper")
                            .entity("bean");//实体类
                })
                //表的配置
                .strategyConfig(builder -> {
                    builder.addInclude("book").addInclude("user") // 设置需要生成的表名,可以添加多个
                            .addTablePrefix("")//消除表名前缀
                            .addFieldPrefix("");//消除字段前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
        System.out.println("成功了...");
    }
}

代码生成器生成的实体类将由下划线命名自动改为驼峰命名,例如user_id -->userId

通过代码生成器生成的时间字段的类型是LocalDateTime,改成Date类型

代码生成器生成的controller的注解,是@Controller,并非Rest风格,需要自己修改

ps:别忘了mapper扫描

三、实体类注释

如代码所示

//表名注解,正常情况不用,类名和表名不同时添加
@TableName("book")
@Data   //lombok
public class Book implements Serializable {

    private static final long serialVersionUID = 1L;
    //主键注解 value:主键字段名 type:主键类型(如下类型为自增)
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    //非主键字段注解,常用属性 value:字段在数据库的名字 exist:数据库中是否存在该字段
    @TableField(value = "name",exist = true)
    private String name;
    private String info;
    private String author;
    //逻辑删除 value:未删除值  delval:已删除值
    @TableLogic(value = "0",delval = "1")
    private int deleted;
}

四、自动填充

1. 添加配置类

@Slf4j
@Component
public class MybatisPlusHandler implements MetaObjectHandler {
    //插入数据时自动填充
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        //后三个参数为 字段名 字段类型 填充值
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
    }
    //修改数据时自动填充
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        //同上
        this.strictUpdateFill(metaObject, "modifyTime", Date.class, new Date());
    }
}

在需要填充的字段添加注解

    //FieldFill是一个枚举 分别代表四种状态下对字段进行填充,自行理解
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.UPDATE)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值