mybatisPlus生成项目

记录是为了更好的成长!

mybatisPlus生成工具,这里以spgingBoot构建项目说明

1、引入jar

如果使用 https://start.spring.io/ 构建springBoot项目只需选 web 和 mysql即可,然后加入下面的依赖到pom文件中

     <!-- 阿里巴巴druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        
        <!-- mybatisplus与springboot整合 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.1</version>
        </dependency>

2、引入一个工具类

 

package com.share.common.utils;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ClassUtils;

/**
 * @Description:通用工具类
 */

public class PropertiesUtil {

    private static Logger log = LoggerFactory.getLogger(PropertiesUtil.class);

    /**
     * @Description: 获取根路径下的properties文件
     * @param fileName
     * @return
     * @throws FileNotFoundException Properties
     */
    public static Properties getProperties(String fileName) throws FileNotFoundException {

        String rootPath = ClassUtils.getDefaultClassLoader().getResource("").getPath().substring(1);
        String filePath = rootPath + fileName;

        log.info("加载的properties属性文件是:" + filePath);

        Properties properties = new Properties();

        // 读取属性文件a.properties
        InputStream in = new BufferedInputStream(new FileInputStream(filePath));
        try {
            properties.load(in);
        } catch (IOException e) {
            log.info("读取文件失败");
        }
        return properties;
    }
}

 

 

 3、生成代码的java文件

 

public class MybatisplusGenerator {
    
    public static void main(String[] args) throws FileNotFoundException {

        //读取配置文件
        String fileName = "application-dev.properties";
        Properties properties = PropertiesUtil.getProperties(fileName);
        
        //获取DB连接信息
        String drivername = (String) properties.get("spring.datasource.driverClassName");
        String url = properties.getProperty("spring.datasource.url");
        String username = properties.getProperty("spring.datasource.username");
        String password = properties.getProperty("spring.datasource.password");
        
        AutoGenerator mpg = new AutoGenerator();

        /*
         * 配置路径
         */
        String projectPath = System.getProperty("user.dir"); // 获取项目路径
        String objPath = projectPath + "/src/main/java"; // 获取java目录
        String parentPackage = "com.share.modules.biz"; // 配置包路径

        /*
         * 全局配置
         */
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir(objPath); // 配置路径
        gc.setOpen(false); // 是否打开生成的文件夹
        gc.setAuthor("author"); // author
        /* 自定义文件命名,注意 %s 会自动填充表实体属性! */
        gc.setMapperName("%sMapper"); // 设置mapper接口后缀
        gc.setServiceName("%sService"); // 设置Service接口后缀
        gc.setServiceImplName("%sServiceImpl"); // 设置Service实现类后缀
        gc.setControllerName("%sController"); // 设置controller类后缀
        gc.setXmlName("%sMapper"); // 设置sql映射文件后缀
        gc.setFileOverride(false); // 是否覆盖同名文件,默认是false
        gc.setActiveRecord(false); // 不需要ActiveRecord特性的请改为false
        gc.setEnableCache(false); // XML 二级缓存
        gc.setBaseResultMap(true); // XML ResultMap
        gc.setBaseColumnList(false); // XML columList
        mpg.setGlobalConfig(gc);

        /*
         * 数据源配置
         */
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL).setDriverName(drivername).setUrl(url).setUsername(username).setPassword(password);
        mpg.setDataSource(dsc);

        /*
         * 策略配置
         */
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel) // 表名生成策略
                .setRestControllerStyle(true); // 设置controller自动加RestController注解
        //.setInclude(new String[] {"rs_user"}); //修改替换成你需要的表名,多个表名传数组,如果注释掉就生成库中所有的表
        // .setTablePrefix(new String[] { "t_" }) // 此处可以修改为您的表前缀
        ;
        mpg.setStrategy(strategy);

        // 包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent(parentPackage).setController("controller")
        /*
         * .setService("service") //服务接口 .setServiceImpl("service.impl") //服务实现
         * .setMapper("mapper") //dao层 .setXml("mapper") //dao层对应的xml文件
         * .setEntity("entity")
         */; // pojo对象
        mpg.setPackageInfo(packageConfig);

        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        

        // 自定义xml的存放路径
        List<FileOutConfig> focList = new ArrayList<>();
        focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义Mapper.xml文件存放的路径
                return projectPath + "/src/main/resources/mappers/" + tableInfo.getEntityName() + "-mapper.xml";
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);
        
        // 配置生成的资源模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setController(null);    //不生成controller
        templateConfig.setService(null);    //不生成service
        templateConfig.setServiceImpl(null);//不生成service实现
        templateConfig.setXml(null);        // 关闭默认 xml 生成,调整生成 至 根目录
        
        mpg.setTemplate(templateConfig);

        // 执行生成
        mpg.execute();
    }
}

 

 

 

4、运行java文件,刷新项目即可 

5、启动springBoot项目需要在启动类加@MapperScan注解,并指定mapper的目录,否则会报错ibatis绑定异常

6、生成的项目并不一定满足我们的需要,需要自定义sql查询,直接在生成的mapper接口和mapper映射文件中追加即可

7、 我习惯生成entity和mapper, 自己写service接口和实现类

注意:
     如果需要自定义sql语句,就必须要在配置文件中指定   mybatis-plus.mapper-locations=classpath:mappers/*.xml
                        不能写成   mybatis.mapper-locaitons=classpath:mappers/*.xml

 

 github示例: https://github.com/kh5218/DemoForSpringBoot/tree/master/mybatisplus

 

 

以上内容代表个人观点,仅供参考,不喜勿喷。。。

posted @ 2019-05-12 18:20  刚刚睡醒  阅读(2092)  评论(0编辑  收藏  举报