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

这篇具有很好参考价值的文章主要介绍了【重要】springboot实战(六)之mybatis-plus代码自动生成器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

环境:

步骤:

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.添加依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.2</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.3.2</version>
</dependency>

<!-- 代码生成时候配置中会用到版本引擎,这里添加模版引擎依赖 -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
</dependency>

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;


@SpringBootTest
class 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文件,没有的目录也会自动生成

mybatisplus代码自动生成器,springboot实战,spring boot,mybatis,java,后端,spring,intellij-idea

测试

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
@Slf4j
public class TUserServiceTest {
    @Resource
    private ITUserService itUserService;

    @Test
    public void selectById(){
        Optional<TUser> optById = itUserService.getOptById(1);
        log.info("通过id查询数据:{}",optById.get());
    }

    @Test
    public void queryAll(){
        List<TUser> list = itUserService.list();
        log.info("获取全量数据:{}",list.size());
    }

    @Test
    public void queryByUser(){
        LambdaQueryWrapper<TUser> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TUser::getName,"zhangsan");
        List<TUser> 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
 */
@Configuration
public 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
@Slf4j
public class TUserServiceTest {
    @Resource
    private ITUserService itUserService;


    @Test
    public void queryByPage(){
        IPage<TUser> page = new Page<>();
        page.setSize(2)
            .setCurrent(2);
        LambdaQueryWrapper<TUser> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TUser::getName,"test");
        List<TUser> list = itUserService.list(page,queryWrapper);
        log.info("分页查询:{}",list.size());
    }
}

3.源码

码云


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

有什么疑问可以评论区留言哦~文章来源地址https://www.toymoban.com/news/detail-778870.html

到了这里,关于【重要】springboot实战(六)之mybatis-plus代码自动生成器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何利用Mybatis-Plus自动生成代码(超详细注解)

    1、简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性

    2024年02月01日
    浏览(45)
  • 自动化生成代码:MyBatis 的 Generator与MyBatis-Plus 的 AutoGenerator

    自动化生成代码是现在一种非常常见的技术,它可以大大提高开发效率,减少重复劳动。而在 Java 开发中,MyBatis 是一个非常流行的 ORM 框架,而其中的 Generator 和 MyBatis-Plus 中的 AutoGenerator 是两个非常好用的自动化代码生成工具,下面我们来分别介绍一下它们的使用。 MyBati

    2024年02月03日
    浏览(43)
  • mybatis-plus自动填充

    在项目开发中,我们会发现有一些数据库表字段是每个表都有的,在之前针对这些字段我们的目前的处理方式就是 增加或者修改的时候一个一个的去赋值,如果都按这样的方法进行操作的话,那我们就需要在每个业务方法中进行操作,这样会显得我们的代码过于冗余、繁琐。

    2024年02月16日
    浏览(47)
  • Mybatis-Plus+SpringBoot框架详解

    1、SpringBoot 简介 SpringBoot 提供了一种快速使用 Spring 的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。 2014 年 4 月,Spring Boot 1

    2023年04月08日
    浏览(47)
  • SpringBoot整合Mybatis-Plus(SpringBoot3)

    依赖pom.xml: pom.xml resource包下的Application.yml: Aollication.yml pojo包下的实体类User: User mapper包下的接口UserMapper: UserMapper 主启动类DemoPlusApplication DemoPlusApplication 测试类DemoApplicationTest: DemoApplicationTest 实现结果 检测数据库连接: C(Create): D(Delete): U(Update) R(Read)

    2024年03月20日
    浏览(54)
  • mybatis-plus填充功能,自动设置值

    1、引入依赖 2、编写entity 3、编写处理器 4、测试 官网:自动填充功能 | MyBatis-Plus (baomidou.com)

    2024年02月09日
    浏览(40)
  • 单元测试实战(四)MyBatis-Plus 的测试

    为鼓励单元测试,特分门别类示例各种组件的测试代码并进行解说,供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战(一)Controller 的测试 单元测试实战(二)Service 的测试     单元测试实战(三)JPA 的测试 单元测试实战(四)MyBatis-Plus 的测试 单元测试实战(

    2024年01月15日
    浏览(43)
  • MyBatis-Plus 实战教程四 idea插件

    MybatisPlus提供了很多的插件功能,进一步拓展其功能。目前已有的插件有: PaginationInnerInterceptor:自动分页 TenantLineInnerInterceptor:多租户 DynamicTableNameInnerInterceptor:动态表名 OptimisticLockerInnerInterceptor:乐观锁 IllegalSQLInnerInterceptor:sql 性能规范 BlockAttackInnerInterceptor:防止全表更

    2024年02月06日
    浏览(47)
  • SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)

    1.需求分析 2.数据库表设计 3.数据库环境配置 1.新建maven项目 2.pom.xml 引入依赖 3.application.yml 配置数据源 数据库名 用户名 密码 驱动是mysql8的(因为上面使用了版本仲裁) 4.Application.java 编写启动类 5.测试 6.配置类切换druid数据源 7.测试数据源是否成功切换 4.Mybatis基础配置 1

    2024年03月20日
    浏览(58)
  • SpringBoot整合JUnit--MyBatis--MyBatis-Plus--Druid

    文章转自黑马程序员SpringBoot学习笔记,学习网址:黑马程序员SpringBoot2教程 1.整合JUnit ​ SpringBoot技术的定位用于简化开发,再具体点是简化Spring程序的开发。所以在整合任意技术的时候,如果你想直观感触到简化的效果,你必须先知道使用非SpringBoot技术时对应的整合是如何做

    2023年04月23日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包