spring boot+mybatis-plus+p6spy执行sql打印

mybatis-plus+p6spy执行sql打印

spring boot 版本

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

mybatis-plus依赖

<!-- mybatis-plus-依赖 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.2.0</version>
		</dependency>
		<!-- mybatis-plus-generator -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.2.0</version>
		</dependency>
		<!-- mybatis-plus-dependency-freemarker -->
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.28</version>
		</dependency>
			<!-- p6spy 插件用于sql打印-->
		<dependency>
			<groupId>p6spy</groupId>
			<artifactId>p6spy</artifactId>
			<version>3.8.1</version>
		</dependency>

application.properties

#MySQL sql性能检测 p6spy 插件, 需要将pom文件中mybatis-plus的多数据源注释掉,才能正常使用
#spring.datasource.primary=master
spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/user-center?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
mybatis-plus.typeAliasesPackage=com.xs.bo.model.entity
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.nologging.NoLoggingImpl
logging.level.com.baomidou.mybatisplus.samples=debug

spy.properties

#3.2.1以上使用
#modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory
#3.2.1以下使用或者不配置
modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true

# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=10

目录结构随自己心意
spring boot+mybatis-plus+p6spy执行sql打印_第1张图片
spy.properties 是p6spy的配置文件,按照mybatis-plus官网配置就行
spring boot+mybatis-plus+p6spy执行sql打印_第2张图片
测试方法,用来生成实体、mapper、service等。
url、user、password、dirver可以根据自己配置。
baseProjectPath 是生成文件的物理路径,basePackage是包名。
生成只有,将e:/test_sql/的文件拷贝到项目中即可

@RunWith(SpringRunner.class)
@SpringBootTest
public class GenerateCodeBuilder {

    @Value("${spring.datasource.dynamic.datasource.master.url}")
    private String url;

    @Value("${spring.datasource.dynamic.datasource.master.username}")
    private String user;

    @Value("${spring.datasource.dynamic.datasource.master.password}")
    private String password;

    @Value("${spring.datasource.dynamic.datasource.master.driver-class-name}")
    private String driver;

    //生成文件所在项目路径
    private static String baseProjectPath = "e:/test_sql/";

    //基本包名
    private static String basePackage = "com.xs.bo";

    //要生成的表名
    private static String[] tables = {
    		"sys_standard_role","sys_standard_role_user"
    };

    @Test
    public void generateCodeBuilder() {

        AutoGenerator gen = new AutoGenerator();

        gen.setDataSource(new DataSourceConfig()
                .setDbType(DbType.MYSQL)
                .setDriverName(this.driver)
                .setUrl(this.url)
                .setUsername(this.user)
                .setPassword(this.password)
        );

        gen.setGlobalConfig(new GlobalConfig()
                .setOutputDir(this.baseProjectPath)
                .setFileOverride(true)
                .setBaseResultMap(false)
                .setBaseColumnList(false)
                .setOpen(true)
                .setSwagger2(false)
                .setServiceName("%sService")
                .setIdType(IdType.INPUT)
                .setAuthor("zhangyushuai")
        );

        gen.setStrategy(new StrategyConfig()
                .setNaming(NamingStrategy.underline_to_camel)
                .setColumnNaming(NamingStrategy.underline_to_camel)
                .setInclude(tables)
                .setRestControllerStyle(true)
                .setEntityLombokModel(false)
//                .setSuperControllerClass("com.tahoecn.bo.controller.TahoeBaseController")
                .setCapitalMode(false)//大写命名

        );

        gen.setPackageInfo(new PackageConfig()
                .setParent(basePackage)
                .setEntity("model.entity")
        );

        gen.setTemplateEngine(new FreemarkerTemplateEngine());
        gen.setTemplate(new TemplateConfig());

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

MybatisPlusConfig 配置文件,

@EnableTransactionManagement
@Configuration
@MapperScan("com.xs.bo.mapper*")
public class MybatisPlusConfig {
}

代码已经放到gitee 仅供参考
关于版本方面尽量统一,因为版本之间会有出入,如果有想法,可以去mybatis-plus的官网中查看。
p6spy仅仅只用于对sql性能的评估,不建议在正式环境上使用
正式环境中,可能会设计到多数据源,mybatis-plus对多数据源也有开源插件,大力推荐
mybatis-plus3.0x官网

你可能感兴趣的:(java,spring,boot)