06 MP之自动填充+SQL执行的语句和速度分析

1. 自动填充

在项目中有一些属性,比如常见的创建时间和更新时间可以设置为自动填充。

1.1 实例

需求: 将创建时间和更新时间设置为自动填充, 这样每次插入数据时可以不用理会这两个字段

1.1.1 在数据库增加字段

06 MP之自动填充+SQL执行的语句和速度分析_第1张图片
默认开启驼峰映射 createTime --> create_time

1.1.2 实体类增加字段

		//分别指定为插入时自动填充和修改时自动填充
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

1.1.3 编写自动填充处理器,指定填充策略

	//新增时创建时间和修改时间是一样的,因此同步自动填充
	//修改时只要自动填充修改时间即可
	@Component
	public class MyMetaHandler implements MetaObjectHandler {
	    @Override
	    public void insertFill(MetaObject metaObject) {
	        setFieldValByName("createTime",new Date(),metaObject);
	        setFieldValByName("updateTime",new Date(),metaObject);
	    }
	
	    @Override
	    public void updateFill(MetaObject metaObject) {
	        setFieldValByName("updateTime",new Date(),metaObject);
	    }
	}

1.1.4 数据库相关配置

1.1.4.1 时区

先用select now();检查时区是否正确, 否则修改
在这里插入图片描述

1.1.4.2 url

datasource的url也声明插入的时区
06 MP之自动填充+SQL执行的语句和速度分析_第2张图片

1.1.5 单元测试

@Test
void testFill(){
    User user = new User();
    user.setName("wang");
    user.setAge(35);
    user.setEmail("[email protected]");
    user.setGender(GenderEnum.MAN);

    userMapper.insert(user);
}

可以看到MP自动新增了两个插入字段.
在这里插入图片描述

2. SQL执行的语句和速度分析

可以使用MybatisPlus提供的SQL分析打印的功能,来获取SQL语句执行的时间。

2.1 添加依赖

1】由于该功能依赖于p6spy组件,所以需要在pom.xml中先引入该组件

<dependency>
    <groupId>p6spygroupId>
    <artifactId>p6spyartifactId>
    <version>3.9.1version>
dependency>

2.2 修改application.yaml

将驱动和url修改

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver

		#之前之后
		# url: jdbc:mysql://localhost:3306/study
	  url: jdbc:p6spy:mysql://localhost:3306/study

2.3 在resources下,创建 spy.properties配置文件

#3.2.1以上使用modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,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=2

在这里插入图片描述

你可能感兴趣的:(MyBatisPlus,sql,log4j,oracle)