Spring-boot整合mybatis-plus 2.3

pom文件需要添加的依赖:

	<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.3</version>
        </dependency>
        <!-- velocity 依赖,用于代码生成 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

xml文件放在了resource根目录下
application.properties配置文件添加xml和实体类扫描:

mybatis-plus.mapper-locations=classpath:/mybatis/*.xml
mybatis-plus.typeAliasesPackage=cn.com.polycis.entity
//数据库字段下划线转驼峰
mybatis-plus.configuration.map-underscore-to-camel-case=true

MybatisPlusConfig配置文件:

import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
//扫描dao或者是Mapper接口
@MapperScan("cn.com.polycis.mapper*")
public class MybatisPlusConfig {
    /**
     * mybatis-plus 分页插件
     */

    @Bean
    public PaginationInterceptor paginationInterceptor() {

        PaginationInterceptor page = new PaginationInterceptor();
        page.setLocalPage(true);// 开启 PageHelper 的支持
        page.setDialectType("mysql");
        return page;
    }

}

启动类需要添加mapper扫描注解

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.PropertySource;

@PropertySource("application.properties")
@MapperScan("cn.com.polycis.mapper")
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class OtaApplication {
	public static void main(String[] args) {
		SpringApplication.run(OtaApplication.class, args);
	}
}

代码生成器文件

package cn.com.polycis;

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.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * <p>
 * 测试生成代码
 * </p>
 *
 * @author
 * @date 2018/11/28
 */
public class GeneratorServiceEntity {

    @Test
    public void generateCode() {

        String packageName = "cn.com.polycis";
        boolean serviceNameStartWithI = true;//user -> UserService, 设置成true: user -> IUserService
        generateByTables(serviceNameStartWithI, packageName, "lo_app_info", "lo_device_info");
    }

    private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
        GlobalConfig config = new GlobalConfig();
        String dbUrl = "jdbc:mysql://xxxxx:3306/lora_level2";
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(dbUrl);
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUsername("xxxx");
        dataSourceConfig.setPassword("xxxxx");
        dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(true); ///全局大写命名
        strategyConfig.setEntityLombokModel(false); // 【实体】是否为lombok模型(默认 false)
        strategyConfig.setDbColumnUnderline(true); //数据库表字段采用下划线的
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
        strategyConfig.setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
        strategyConfig.setTablePrefix(new String[]{"lo_", ""});// 此处可以修改为您的表前缀
       // strategyConfig.entityTableFieldAnnotationEnable(true);//生成实体类属性的对应数据库字段注解

        config.setActiveRecord(false);
        config.setOutputDir("D:\\ttttt\\lorawan-ota\\src\\main\\java");
        config.setFileOverride(true);

        if (!serviceNameStartWithI) {
            config.setServiceName("%sService");
        }


        new AutoGenerator().setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(
                        new PackageConfig()
                                .setParent(packageName)
                                .setController("controller")
                                .setEntity("entity")
                )
                .setCfg(
                        // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
                        new InjectionConfig() {
                            @Override
                            public void initMap() {
                                Map<String, Object> map = new HashMap<>();
                                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
                                this.setMap(map);
                            }
                        }.setFileOutConfigList(Collections.<FileOutConfig>singletonList(new FileOutConfig("/templates/mapper.xml.vm") {
                            // 自定义输出文件目录
                            @Override
                            public String outputFile(TableInfo tableInfo) {
                                return "D:/ttttt/lorawan-ota"+"/src/main/resources/mybatis/" + tableInfo.getEntityName() + "Mapper.xml";
                            }
                        }))

                ).execute();
    }

    private void generateByTables(String packageName, String... tableNames) {
        generateByTables(true, packageName, tableNames);
    }
}

猜你喜欢

转载自blog.csdn.net/reee112/article/details/84584745
2.3