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&amp;useUnicode=false&amp;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.代码生成器

 

 

 

 

 



posted @ 2022-04-20 11:49  面向机器编程  阅读(59)  评论(0)    收藏  举报