目录
一、简介
2.特性
二、入门
1.创建springboot 项目
注意:引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题
2.数据准备
3.配置application.yml
4.代码
BaseMapper<>很重要!它封装了常用的 CRUD 操作
5.创建 测试类
三、主键策略&自动填充
1.自增策略
要想影响所有实体的配置,可以设置全局主键配置
2.自动填充
项目结构展示(还没写完)
一、简介
Mybatis-Plus简称 MP 是一个mybatis的增强工具,在mybatis的基础上只做增强,不做改变,为简化开发 提高效率而生,MP 提供了代码生成器,可以一键生成controller service mapper model mapper.xml 代码,同时 提供丰富的CRUD 操作方法,非常方便我们操作
2.特性
| 
 | 
二、入门
1.创建springboot 项目(点击查看如何创建 )
# pom 文件 
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.10.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zhp</groupId>
    <artifactId>sbdemo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>sbdemo1</name>
    <description>sbdemo1</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--mysql-->
        <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<!--使用lombok 记得装插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--mybatis-plus-->
       <dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.4.2</version>
		</dependency>
		<!--mybatis-plus代码生成器-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.3.2</version>
		</dependency>
		<!--模板   代码生成器需要使用模板进行生成-->
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>
		
		<!--mybatis-plus 扩展插件  比如  分页插件依赖-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-extension</artifactId>
			<version>3.4.2</version>
		</dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>注意:引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题
2.数据准备
创建数据 库 创建User 表
| DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) ); 其对应的数据库 Data 脚本如下: DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com'); | 
3.配置application.yml
# 数据库地址
datasource:
  url: localhost:3306/java
spring:
  #  profiles:
  #    active: dev
  #数据库的配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${datasource.url}?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
    username: root
    password: 123456
#mp的配置
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: 1
      logic-not-delete-value: 0
      id-type: auto  # 设置全局主键自增
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl        #  查看sql输出日志
    map-underscore-to-camel-case: true              # 驼峰命名规范   stu_name stuName
  mapper-locations: classpath:mapper/*.xml   # 指定映射文件所在位置
  #  指定别名设置的包
  type-aliases-package: com.zhp.sbdemo1.pojo
# 查看sql语句的日志
logging:
  level:
    com.zhp.sbdemo1.mapper: debug
server:
  port: 8888
4.代码
# 1.启动类
#启动类添加 @MapperScan 注解  ,扫描mapper 包下的接口
/**
 * 这类也算是 配置类
 *
 * @SpringBootConfiguration
 * @EnableAutoConfiguration
 *
 * 1.添加mp依赖
 * 2.在 application.yml 中配置
 * 3.创建mapper 继承BaseMapper接口,这个接口封装了常用的增删改查方法,可以直接调用
 * */
@SpringBootApplication  // 忽略数据源的自动配置
@MapperScan("com.zhp.sbdemo1.mapper")
public class Sbdemo1Application {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }
}
#2.实体类  在pojo 下 创建User.java  使用lombok 简化代码
@Data
public class User {
    //@TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
#3. 创建mapper 包  创建UserMapper 接口 UserMapper.java
@Repository
public interface UserMapper extends BaseMapper<User> {
}BaseMapper<>很重要!它封装了常用的 CRUD 操作
| * 1.公共的方法进行抽取,抽取到BaseMapper接口中,将用户操作的方法对象,转化为数据库能够识别的SQL语句 
 | 
注意:
IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。
为了避免报错,可以在 mapper 层 的接口上添加 @Repository 注
5.创建 测试类
@SpringBootTest
class UserMapperTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void testSelectList() {
        //UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper
        //所以不填写就是无任何条件
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }
}    通过以上几个简单的步骤,我们就实现了 User 表的 基本查询 功能,甚至连 XML 文件都不用编写!
三、主键策略&自动填充
1.自增策略
要想主键自增需要配置如下主键策略
-  需要在创建数据表的时候设置主键自增 
-  实体字段中配置 @TableId(type = IdType.AUTO) 
// 使用 数据库的 自增策略       默认是 IdType.ID_WORKER    雪花算法生成的id
@TableId(type = IdType.AUTO)      
private Long id;要想影响所有实体的配置,可以设置全局主键配置
在application.yml中添加
#全局设置主键生成策略
mybatis-plus.global-config.db-config.id-type=auto2.自动填充
项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。
我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作:
1.数据库表中添加自动填充字段
在User表中添加datetime类型的新的字段 create_time、update_time
2.实体上添加注解
@Data public class User { ......
@TableField(fill = FieldFill.INSERT) // 添加时 赋值 private Date createTime;
//@TableField(fill = FieldFill.UPDATE) 修改时 赋值
@TableField(fill = FieldFill.INSERT_UPDATE) // 添加 和 修改 都会赋值
private Date updateTime;
}3.实现元对象处理器接口 注意:不要忘记添加 @Component 注解
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("insert info ......");
        // 添加时填充
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
        // 添加 乐观锁的  默认值是 1
        this.setFieldValByName("version", 1, metaObject);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("update info ......");
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}
项目结构展示(还没写完)




















