欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot整合mybatis-plus,pagehelper以及代码自动生成

程序员文章站 2022-06-28 18:55:39
参考博客https://blog.csdn.net/qq_42536773/article/details/104352352https://www.cnblogs.com/liuyj-top/p/12976396.htmlhttps://blog.csdn.net/mango_hc/article/details/103564590https://blog.csdn.net/qq_33247435/article/details/99675154目前还有的问题:代码生成对应的....

引入依赖

下面两个依赖如果只引入上面的那一个,项目启动后会自动停止

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

lombok作为可以简写代码,以及对应的junit-test,这两个可以不用引入

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 连接数据库mysql的依赖

 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- mybatis plus与其 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.0</version>
        </dependency>

        <!--mybatis-plus分页-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <!--模板引擎代码生成需要的thymeleaf和velocity引入其中一个也可以,看生成需要哪个模板就引入哪个-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <exclusions><!-- 去掉springboot默认配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

application.yml配置文件

mapper-locations: classpath:mapper/*.xml 是找到xml文件的位置

server:
  port: 8080


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://106.13.56.181:3306/xfly?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&useSSL=false
    username: root
    password: AAA@1111
mybatis-plus:
  config-location:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql
  mapper-locations: classpath:mapper/*.xml
logging:
  level:
    com.haocheng.study.springboot.mybatisplus: debug



pagehelper:
  # 指定使用的数据库数据库
  helperDialect: mysql
  # reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, 		pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
  reasonable: true

启动类上面加注解

@MapperScan("com.yufeng.mybatisplus.mapper")对应mapper.java文件的位置,这样可以避免在每个mapper.java文件上加@Mapper注解

@SpringBootApplication
@MapperScan("com.yufeng.mybatisplus.mapper")
public class XflyMybatisplusApplication {

    public static void main(String[] args) {
        SpringApplication.run(XflyMybatisplusApplication.class, args);
    }

}

对应的代码自动生成

package com.yufeng.mybatisplus.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: guxx
 * @Description:
 * @Date: 2020/7/17 17:16
 * @Version: 1.0
 */
public class MybatisAutoGenerator {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();


        // TODO 这里需要完善代码生成之后存放的module路径
        String projectPath = System.getProperty("user.dir")+"/mybatisplus";

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOpen(false); //是否自动打开文件夹
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setFileOverride(false);//文件是否需要覆盖
        gc.setActiveRecord(true);//不需要ActiveRecord特性的请改为false
        gc.setEnableCache(false);//XML二级缓存
        gc.setBaseResultMap(true);//XML ResultMap
        gc.setBaseColumnList(true);//XML columList
        gc.setAuthor("yufeng");//作者
//        gc.setSwagger2(true);

        //自定义文件命名,注意%s 会自动填充表实体属性
        gc.setControllerName("%sController");
        gc.setServiceName("I%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");

        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://106.13.56.181:3306/xfly?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&useSSL=false");
        // dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("AAA@1111");
        dsc.setSchemaName("yufeng");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);


        //包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.yufeng.mybatisplus");
        pc.setController("controller");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setMapper("mapper");
        pc.setEntity("entity");
        mpg.setPackageInfo(pc);


        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        //不生成如下类型模板 设置成null即可
//        templateConfig.setController(null);
//        templateConfig.setService(null);
//        templateConfig.setServiceImpl(null);
//        templateConfig.setMapper(null);
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

         如果模板引擎是 freemarker
        //String templatePath = "/templates/mapper.xml.ftl";
        //如果模板引擎是 velocity
        String mapperXmlPath = "/templates/mapper.xml.vm";


        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置优先于默认配置生效

        focList.add(new FileOutConfig(mapperXmlPath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义xml 文件名和生成路径
                return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        String[] t1 = new String[]{"sys_user"}; // TODO


        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setInclude(t1);//需要生成的表
        mpg.setStrategy(strategy);

        mpg.execute();
    }

}

 

参考博客

https://blog.csdn.net/qq_42536773/article/details/104352352

https://www.cnblogs.com/liuyj-top/p/12976396.html

https://blog.csdn.net/mango_hc/article/details/103564590

https://blog.csdn.net/qq_33247435/article/details/99675154

 

目前还有的问题:

代码生成对应的module目录

以及mapper.xml文件里面内容的路径有误

 

代码地址

https://gitee.com/Freegxx/xfly

本文地址:https://blog.csdn.net/freegxx001/article/details/109516390

相关标签: SpringBoot