使用mybatisPlus插件可以很方便的生成与数据库对应的PO对象,以及对应的controller、service、ImplService、mapper代码,生成这种代码的方式有很多,包括mybatis-plus提供的代码生成器,以及idea提供的代码生成器,无论哪一种只要掌握了方法并熟练操作,都可以达到相同的效果,这里介绍采用mybatisPlus插件自动生成代码。
第一步,先下载插件:
在setting-plugins中搜索这个插件并安装;
这个mybatisPlus指的不是baomidou里边的,而是一个单独的插件
第二步,设置数据库相关参数:
这里需要注意,如果mysql数据库版本6.0及以上,在dbUrl中数据库名称后面需要添加上时区相关参数:
//jdbc:mysql://localhost:3306/xc_content?serverTimezone=Asia/Shanghai
?serverTimezone=Asia/Shanghai
//或者:
?serverTimezone=UTC
否则会报如下错误:
数据库连接成功提示如下:
第三步,生成代码
点击Code Generator,弹出下图的对话框,对话框中自动列出数据库中可供生成代码的表格。
生成的代码格式如下:
package com.xuecheng.content.model.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 课程分类
* </p>
*
* @author May
* @since 2025-02-02
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("course_category")
@ApiModel(value="CourseCategory对象", description="课程分类")
public class CourseCategory implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private String id;
@ApiModelProperty(value = "分类名称")
@TableField("name")
private String name;
@ApiModelProperty(value = "分类标签默认和名称一样")
@TableField("label")
private String label;
@ApiModelProperty(value = "父结点id(第一级的父节点是0,自关联字段id)")
@TableField("parentid")
private String parentid;
@ApiModelProperty(value = "是否显示")
@TableField("is_show")
private Integer isShow;
@ApiModelProperty(value = "排序字段")
@TableField("orderby")
private Integer orderby;
@ApiModelProperty(value = "是否叶子")
@TableField("is_leaf")
private Integer isLeaf;
}
第四部,引入相应的依赖
<swagger-annotations.version>1.5.20</swagger-annotations.version>
<org.projectlombok.version>1.18.8</org.projectlombok.version>
<mybatis-plus-boot-starter.version>3.4.1</mybatis-plus-boot-starter.version>
//lombok依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
</dependency>
//swagger依赖
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger-annotations.version}</version>
</dependency>
<!--存在mybatisplus注解添加相关注解保证不报错-->
<!--引入mybatisplus注解依赖和核心依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>${mybatis-plus-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>${mybatis-plus-boot-starter.version}</version>
</dependency>
第五步,生成的代码中注解的相关含义
//lombok中的注解,实现model类的getter和setter即toString方法
@Data
//lombok中的注解,实现model类的equals方法和hashcode方法
@EqualsAndHashCode(callSuper = false)
//lombok中的注解,默认为false,当为true时,对应字段的setter方法调用后会返回当前对象,
//如果不加没有返回值void
@Accessors(chain = true)
//MybatisPlus注解,用来将指定的数据库表和javabean进行映射,括号里边双引号内
//就是数据库中的表格名称,默认为value
//当实体类的类名和数据库表名不一致时,可以使用@TableName注解制定实体类对应的数据库表名
@TableName(value = "course_base")
//swagger注解,用在实体类上,用来对使用该注解的接口相关的实体类添加额外的描述信息,
//常和@ApiModelProperty注解配合使用
@ApiModel(value="CourseBase对象", description="课程基本信息")
//作用在接口相关实体类的属性(字段)上的注解,用来对具体的接口相关实体类中的
//参数添加额外的描述信息,
// 除了可以和@ApiModel注解关联使用,也会单独拿出来用
@ApiModelProperty(value = "主键")
//当实体类的主键字段和数据库表的逐渐字段不一致,或者需要指定主键生成策略师,
//可以使用@TableId注解
@TableId(value = "id", type = IdType.AUTO)
//当实体类的字段名与数据库表的字段名不一致,或者需要指定字段的某些特殊属性
//(如字段填充策略、是否为数据库字段等)时,可以使用@TableField注解
@TableField("company_id")