Mybatis-X插件自动生成代码的使用详解(小白专用)

1、 使用idea链接数据库

2023+版本的idea连接数据库2023.2版本

MySQL:详见使用idea链接MySQL数据库并生成实体类
idea链接数据库之后也提供了一个生成实体类的方法,见↑
SQLserver:idea连接Sqlserver数据库

2、安装mybatis-X插件

File–>Settings–>Plugins–>Marketplace,=,搜索MyBatisX–>install
在这里插入图片描述

3、生成代码内容

3.1 侧边栏打开数据库,选择要生成代码的表格,在表名上右击,点击MybatisX-Generator
在这里插入图片描述

3.2 设置类名生成规则及生成代码的路径
路径的生成按照物理路径是: module path --》 base path --》base package
(这里注意如果想实体类带Entity后缀,在extra class suffix一栏填上Entity即可)
在这里插入图片描述

3.3 生成代码
注意mybatis-plus的版本是2还是3,引用的包不一样,可以看看其他类,plus3的包多一层
Actual Column这个属性名这里,今天发现一个玄幻的现象,就是不选中才是想要的驼峰????大家生成的时候先拿一个表试试,没问题的再大批量操作!!!!!

// mybatis-plus2
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.service.IService;
import com.baomidou.mybatisplus.mapper.BaseMapper;

// mybatis-plus3
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

在这里插入图片描述

template:

custom-model-swagger:生成实体文件,属性上会自动增加swagger的相关注解,
default-all:生成实体文件、xml文件和dao层接口文件,
                   默认会生成常用的增删改查到的方法
mybatis-plus3:生成实体文件、xml文件、dao层接口文件、
                         service层接口文件和service层接口实现文件

不需要的文件可以点击“-”删除掉,根据所需生成想要的代码,除了上一页选上的实体类外,本页面至少再选择一个文件,不能只生产实体类

3.4 效果代码
在这里插入图片描述

实体类
在这里插入图片描述
mapper接口
在这里插入图片描述
service层
接口
实现类
xml文件
在这里插入图片描述顺带一句:这里的子标签可以结合标签引入代码段,可以提高效率、简化代码、提高可读性

<!--定义sql片段-->
<sql id="Base_Column_List">
        carnumber,cartype,color,
        price,rentprice,deposit,
        status,description,carimg
</sql>
<select id="getCarById" parameterType="java.lang.String" resultMap="BaseResultMap">
    select
    <!--引用sql片段-->
    <include refid="Base_Column_List" />
    from car
    where  carnumber= #{id}
</select>

4、配置文件

如果希望在生成的代码中加入自己的内容,可以选择修改配置文件,直接更改后缀为ftl的文件,欢迎大家交流好的配置内容
在这里插入图片描述-------------------------------------------------------------------------------------------------------------------------------------------------------

更新 5、生成符合阿里规范的代码

阿里规范中要求 --》 类/接口/枚举注释必须包含 作者、邮箱、创建时间、类职责描述
名字和邮箱换成你自己的,不建议用计算机的名字(PC,admin之类的)
示例
在这里插入图片描述

主要是注释模板,这是mybatisplus3的,粘一下配置文件
mapperInterface.ftl

package ${mapperInterface.packageName};

import ${tableClass.fullClassName};
<#if tableClass.pkFields??>
    <#list tableClass.pkFields as field><#assign pkName>${field.shortTypeName}</#assign></#list>
</#if>
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * @Author : 名字
 * @Email : 邮箱
 * @Create : ${.now?string('yyyy-MM-dd HH:mm:ss')}
 * @Description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})</#if>】的数据库操作Mapper
 */
public interface ${mapperInterface.fileName} extends BaseMapper<${tableClass.shortClassName}> {

}

serviceImpl.ftl

package ${baseInfo.packageName};

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import ${tableClass.fullClassName};
import ${serviceInterface.packageName}.${serviceInterface.fileName};
import ${mapperInterface.packageName}.${mapperInterface.fileName};
<#if baseService??&&baseService!="">
import ${baseService};
    <#list baseService?split(".") as simpleName>
        <#if !simpleName_has_next>
            <#assign serviceSimpleName>${simpleName}</#assign>
        </#if>
    </#list>
</#if>
import org.springframework.stereotype.Service;

/**
 * @Author : 名字
 * @Email : 邮箱
 * @Create : ${.now?string('yyyy-MM-dd HH:mm:ss')}
 * @Description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})</#if>】的数据库操作Service实现
 */
@Service
public class ${baseInfo.fileName} extends ServiceImpl<${mapperInterface.fileName}, ${tableClass.shortClassName}>
    implements ${serviceInterface.fileName}{

}

serviceInterface.ftl

package ${baseInfo.packageName};

import ${tableClass.fullClassName};
<#if baseService??&&baseService!="">
import ${baseService};
    <#list baseService?split(".") as simpleName>
        <#if !simpleName_has_next>
            <#assign serviceSimpleName>${simpleName}</#assign>
        </#if>
    </#list>
</#if>
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @Author : 名字
 * @Email : 邮箱
 * @Create : ${.now?string('yyyy-MM-dd HH:mm:ss')}
 * @Description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})</#if>】的数据库操作Service
 */
public interface ${baseInfo.fileName} extends IService<${tableClass.shortClassName}> {

}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐