Mybatis-plus自动生成代码(逆向工程????)

mybatis-plus 专栏收录该内容
2 篇文章 0 订阅


MP给我们提供的一个很强大的扩展功能就是自动生成代码,他可以帮助我们生成mapper,controller,service,serviceImpl…等许多没有技术含量的代码,下面看看怎么操作吧!!!

1.pom导入Mybatis Plus Generator依赖

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>

除了导入 mybatis-plus-generator依赖外,还需要导入velocity模板,因为MP是按照这个模板来生成代码的!!!

模板默认使用的是velocity;
除了velocity外,还有Freemarker,Beet两个模板

2.新建一个类,编写main方法

public class Main {
    public static void main(String[] args) {
        //1.创建generator对象
        AutoGenerator autoGenerator = new AutoGenerator();
        //2.配置数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/exam?useSSL=false&useUnicode=true&characterEncoding=utf-8");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("root");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");

        autoGenerator.setDataSource(dataSourceConfig);

        //3.全局配置(指明这些类生成的具体位置以及作者....)
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
        globalConfig.setOpen(false);//不打开文件
        globalConfig.setAuthor("YangJiaWen");
        //让service名字前面没有I
        globalConfig.setServiceName("%Service");

        autoGenerator.setGlobalConfig(globalConfig);

        //4.设置包信息(生成的类放在哪个包里面)
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.jw");
        packageConfig.setModuleName("generator");
        packageConfig.setController("controller");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");
        packageConfig.setEntity("entity");

        autoGenerator.setPackageInfo(packageConfig);

        //5.配置策略
        StrategyConfig strategyConfig = new StrategyConfig();

        //提供lombok
        strategyConfig.setEntityLombokModel(true);
        //支持驼峰
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        autoGenerator.setStrategy(strategyConfig);

        //6.执行
        autoGenerator.execute();
    }

}

然后执行此main发方法,就会帮我们生成代码了!!!
在这里插入图片描述
注意:

  • 这些模板不用自己编写,只需拷贝过去稍作修改即可!!!
  • 有关一些模板配置的解释
    • System.getProperty(“user.dir”)作用是获取当前项目的根路径

    • 我们发现此配置是生成一个数据库中的所有表,如果我们想生成部分表,该怎么办???
      只需要添加一条即可,这里的include中的参数是你的表名,参数是可变参数,可以生成多个表

       strategyConfig.setInclude("user1","user2")
      

3.具体解析

通过图片我们可以发现,该生成器给我们自动生成了Service接口,以及实现类…
下面我们拿个简单类来分析一下
在这里插入图片描述

在这里插入图片描述
点进去进去发现:
LoginUserService继承了Iservice接口,
LoginuserServiceImpl 继承 ServiceImpl<LoginuserMapper, Loginuser>并实现了 LoginUserService接口

这里的Iservice接口和ServiceImpl<LoginuserMapper, Loginuser>是代码生成器已经帮我们生成好了的,我们点进去发现
在这里插入图片描述
他这两个类中已经给我们封装了BaseMapper中的方法,我们只需要在controller中注入LoginUserService即可;

如果我们是想要在service层编写自己的一些业务操作,那么在loginUserService接口中或者实现类中增加即可!!!

最后的最后,有一个小细节,很重要,那就是一定要在springboot的启动类上加上@MapperScan注解,属性值填你生成的代码的路径,注意,如果漏掉了这一步,那么springboot是不会识别到你的mapper的,启动会报错;

拿刚才那个例子:在这里插入图片描述

  • 2
    点赞
  • 1
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值