小工具知识网

当前位置: 首页 > 行业知识 > 【重要】springboot实战(六)之mybatis-plus代码自动生成器

行业知识

【重要】springboot实战(六)之mybatis-plus代码自动生成器

2026-11-09 02:04:52 来源:互联网转载

目录

环境:

步骤:

1.添加依赖

2.配置代码

3.运行

测试

1.测试生成的service

1.1、service用法

2.分页查询

2.1、分页插件配置 

2.2、测试

3.源码


环境:

jdk:1.8

springboot版本:2.7.15

mybatis-plus版本:3.5.1以上

(本文章用的当前最新版本:3.5.3.2,代码适用于3.5.1版本以上的版本)

步骤:

1.添加依赖

    com.baomidou    mybatis-plus-boot-starter    3.5.3.2    com.baomidou    mybatis-plus-generator    3.5.3.2    org.freemarker    freemarker

2.配置代码

在测试类中创建一下测试类运行就行。

运行之前需要修改一些配置信息。

1.修改成自己的数据库链接地址、账号、密码

2.进行全局配置globalConfig,参数解释:

  • author:作者名称,设置以后代码生成时候类注释上会有设置的名字
  • outputDir:指定输出目录,这里设置到/src/main/java目录就行,生产的文件会输出到这个目录下
  • enableSwagger:如果项目中配置了swagger,可以打开,如果没配置注释调就行

    3.进行包配置packageConfig,参数解释:

    • parent:设置父包名,这个设置你自己的包名就可以,生产代码时,此属性会配合outputDir属性,在/src/main/java目录下生成一个包
    • pathInfo:此属性是指定生成mapper.xml文件的路径

      4.进行策略配置strategyConfig,参数解释:

      • addInclude:设置生成的表名称,如果多张表用逗号","分割开
      • addTablePrefix:设置过滤表前缀,如果表有固定的前缀,可以在这里设置,生产代码时会将前缀去掉,如:t_user表,如果设置此属性,生成的实体类为User,如果不设置则生成的实体类名称为:TUser
        package com.iterge.iterge_pre;import com.baomidou.mybatisplus.generator.FastAutoGenerator;import com.baomidou.mybatisplus.generator.config.OutputFile;import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import java.sql.Types;import java.util.Collections;@SpringBootTestclass ItergePreApplicationTests {    @Test    void contextLoads() {        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/test", "root", "root")                .globalConfig(builder -> {                    builder.author("iterge") // 设置作者                            // 开启 swagger 模式 默认不开启                            //.enableSwagger()                            .outputDir("/Users/liuph/dev/space/idea/iterge_pre/src/main/java"); // 指定输出目录                })                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;                    if (typeCode == Types.SMALLINT) {                        // 自定义类型转换                        return DbColumnType.INTEGER;                    }                    return typeRegistry.getColumnType(metaInfo);                }))                .packageConfig(builder -> {                    // 设置父包名                    builder.parent("com.iterge.iterge_pre")                            // 设置父包模块名                            //.moduleName("mapper")                            // 设置mapperXml生成路径                            .pathInfo(Collections.singletonMap(OutputFile.xml, "/Users/liuph/dev/space/idea/iterge_pre/src/main/resources/mapper"));                })                .strategyConfig(builder -> {                    // 设置需要生成的表名                    builder.addInclude("t_user,user_info");                            // 设置过滤表前缀                            //.addTablePrefix("t_", "c_");                })                // 使用Freemarker引擎模板,默认的是Velocity引擎模板                .templateEngine(new FreemarkerTemplateEngine())                .execute();    }}

        3.运行

        启动测试类,生成结果如下:

        此代码生成器会同时生成:controller、service、serviceImpl、mapper、entity以及mapper.xml文件,没有的目录也会自动生成

        测试

        1.测试生成的service

        1.1、service用法

        package com.iterge.iterge_pre.service;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.iterge.iterge_pre.entity.TUser;import com.iterge.iterge_pre.entity.User;import com.iterge.iterge_pre.mapper.TUserMapper;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;import java.util.List;import java.util.Optional;/** * @author liuph * @date 2023/9/6 10:49:02 */@SpringBootTest@Slf4jpublic class TUserServiceTest {    @Resource    private ITUserService itUserService;    @Test    public void selectById(){        Optional optById = itUserService.getOptById(1);        log.info("通过id查询数据:{}",optById.get());    }    @Test    public void queryAll(){        List list = itUserService.list();        log.info("获取全量数据:{}",list.size());    }    @Test    public void queryByUser(){        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();        queryWrapper.eq(TUser::getName,"zhangsan");        List list = itUserService.list(queryWrapper);        log.info("自定义条件查询:{}",list.size());    }}

        2.分页查询

         mybits-plus的分页查询要引入分页插件

        2.1、分页插件配置 

        package com.iterge.iterge_pre.config;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @author liuph * @date 2023/9/6 11:30:02 */@Configurationpublic class MybatisPlusConfig {    /**     * 添加分页插件     */    @Bean    public MybatisPlusInterceptor mybatisPlusInterceptor() {        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();        //如果配置多个插件,切记分页最后添加        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));        //如果有多数据源可以不配具体类型 否则都建议配上具体的DbType        //interceptor.addInnerInterceptor(new PaginationInnerInterceptor());        return interceptor;    }}

        2.2、测试

        package com.iterge.iterge_pre.service;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.iterge.iterge_pre.entity.TUser;import com.iterge.iterge_pre.entity.User;import com.iterge.iterge_pre.mapper.TUserMapper;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;import java.util.List;import java.util.Optional;/** * @author liuph * @date 2023/9/6 10:49:02 */@SpringBootTest@Slf4jpublic class TUserServiceTest {    @Resource    private ITUserService itUserService;    @Test    public void queryByPage(){        IPage page = new Page();        page.setSize(2)            .setCurrent(2);        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();        queryWrapper.eq(TUser::getName,"test");        List list = itUserService.list(page,queryWrapper);        log.info("分页查询:{}",list.size());    }}

        3.源码

        码云


        创作不易,你的鼓励是我创作的动力~

        有什么疑问可以评论区留言哦~

上一篇:地图怎么查服务器?

下一篇:解密地图服务器怎么设置?