Mybatis及Mybatis-plus相关配置
一、Mybatis
1.父工程POM导入依赖
<dependencies>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>//测试
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
2.在resource包下配置核心配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--核心配置文件-->
<configuration>
<!--引入外部配置文件-->
<properties resource="db.properties"/>
<!--日志工厂配置-->
<settings>
<!--<setting name="logImpl" value="STDOUT_LOGGING"/>-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--显示开启全局缓存-->
<setting name="cacheEnabled" value="true"/>
<!--是否开启自动驼峰命名规则映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--可以给实体类起别名-->
<!-- <typeAliases>-->
<!-- <typeAlias type="com.rzp.pojo.User" alias="User"/>-->
<!-- </typeAliases>-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.rzp.dao.UserMapper"/>
</mappers>
</configuration>
注意在配置环境标签时,可以直接依据本机参数写死,或者如上代码配置properties配置文件读取
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=false&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
IDEA连接数据库的步骤(查找url):
a.选择mysql数据库


如果出现连接不上的问题可能是MySQL服务停止了
通过此电脑的服务打开服务与应用程序

将Mysql服务启动即可

b.测试连接成功之后选择mybatis数据库

3.构建sqlSessionFactory

4.构建实体类(对应数据库的码)

5.构建mapper接口及配置文件(xml)

注意XML中命名空间绑定对应接口

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.rzp.dao.UserMapper">
<!--在当前Mapper.xml中使用二级缓存-->
<cache/>
</mapper>
6.编写测试类

二、Mybatis-plus
1.初始化配置POM
注意不要同时导入Mybatis和Mybatis-plus
<!-- 数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
2.连接数据库

spring.datasource.username=root
spring.datasource.password=123
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_lus?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3.连接数据库

4.构建实体类(对应数据库的码)

5.构建mapper接口(继承BaseMapper接口即可)

同时注意结合springboot使用时需要在主接口扫描所有的Mapper

6.测试

7.配置日志

8.主键自增
需要配置主键自增
1)实体类字段上设置注解@TableId(type=IdType.AUTO)

2)数据库字段一定要是自增的(注意保存设置)

其余IdType设置
package com.baomidou.mybatisplus.annotation;
public enum IdType {
AUTO(0),
NONE(1),
INPUT(2),
ID_WORKER(3),
UUID(4),
ID_WORKER_STR(5);
9.自动填充
方式一:通过数据库层面添加字段(不推荐)
注意对于时间设置,MYSQL5.6版本以下不支持两个TIMESTAMP类型字段,建议升版到MYSQL8版本
方式二:代码实现
1)实体类字段属性增加注解(注意在数据库中先添加对应的字段名即可)

2)编写处理器来处理注解

3)测试插入更新


10.乐观锁
1)在数据库中添加version字段

2)在实体类中添加对应的字段

3)注册组件

其中考虑该类为配置类,因此将MapperScan移到了这里
注意使用乐观锁插件前,需要添加Maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.2</version>
</dependency>
//注册乐观锁插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mybatisPlusInterceptor;
}
4)单线程下成功测试


5)多线程下失败测试(如果没有乐观锁插队线程的值会把覆盖)


根据文档说明
说明:
- 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
- 整数类型下
newVersion = oldVersion + 1 newVersion会回写到entity中- 仅支持
updateById(id)与update(entity, wrapper)方法 - 在
update(entity, wrapper)方法下,wrapper
11.查询使用(单个、批量、条件查询)

12.分页查询
1)在config类下配置插件方法(事例中将乐观锁插件的代码整合在一起了)

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
13.删除操作

14.逻辑删除操作
物理删除:从数据库中直接移除
逻辑删除:在数据库中没有被移除,而是通过一个变量使之失效
1)在数据库中增加deleted字段

2)实体类中增加对应的字段

3)配置逻辑删除

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
4)测试


再次进行查询


查询无结果但是数据库中字段仍存在,
15.性能分析插件(SQL分析打印)
注意:PerformanceInterceptor在3.2.0被移除了,如果想进行性能分析,用第三方的,官方这样写的“该插件 3.2.0 以上版本移除推荐使用第三方扩展 执行SQL分析打印 功能”。

由于使用的版本高于3.2.0因此报错
@Bean
@Profile({"dev","test"})//效率问题只能在测试、开发环境使用
public PerformanceInterceptor performanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(1);//ms 设置sql执行的最大时间,如果超过了不执行
performanceInterceptor.setFormat(true);
return performanceInterceptor
}
对于高于3.2.0的版本设置
1)添加maven依赖
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
2)修改properties设置(url/driver-class-name发生改变)

spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
3)添加spy.properties

#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#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=2
16.条件构造器Wrapper
没有任何设置,直接进入测试步骤








17.代码生成器
本文来自博客园,作者:面向机器编程,转载请注明原文链接:https://www.cnblogs.com/face-to-machine-program/articles/16169232.html

浙公网安备 33010602011771号