简介 #
- MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生
- 这里以MySQL数据库为案例,以Idea作为IDE,使用Maven作为构建工具,使用SpringBoot完成各种功能
- 课程主要内容
- 特性 润物无声、效率至上、丰富功能
- 支持的数据库
- 框架结构
- 左边:扫描实体,从实体抽取属性猜测数据库字段
- 通过默认提供的方法使用sql语句,然后注入mybatis容器
开发环境 #
测试数据库和表 #
这里创建数据库mybatis_plus
然后创建表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) );
插入默认数据
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');
Spring Boot工程 #
添加依赖,并install Lombok 插件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
<relativePath/>
</parent>
<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>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
基础配置 #
创建spring boot启动类
@SpringBootApplication public class MybatisPlusApplication { public static void main(String[] args) { SpringApplication.run(MybatisPlusApplication.class, args); } }
配置resources/application.yml文件
spring: #配置数据源 datasource: #配置数据源类型 type: com.zaxxer.hikari.HikariDataSource #配置数据源各个信息 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&&useSSL=false username: root password: 123456
- 这个时候启动会直接结束,因为我们没有使用springboot-web 包
实体类的创建
package com.ly.mybatisplus.pojo; import lombok.Data; //相当于get set 无参构造器 hashCode()和equals()、toString()方法重写 @Data public class User { private Long id; private String name; private Integer age; private String email; }
mapper的创建 mapper/UserMapper
package com.ly.mybatisplus.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ly.mybatisplus.pojo.User; import org.springframework.stereotype.Repository; //将这个类标记成持久层组件 处理测试类中红色下划线的问题 @Repository public interface UserMapper extends BaseMapper<User> { }
设置mapper接口所在的包
package com.ly.mybatisplus; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //扫描指定包下的mapper接口 @MapperScan("com.ly.mybatisplus.mapper") public class MybatisPlusApplication { public static void main(String[] args) { SpringApplication.run(MybatisPlusApplication.class, args); } }
测试 #
测试类的创建
import com.ly.mybatisplus.MybatisPlusApplication; import com.ly.mybatisplus.mapper.UserMapper; import com.ly.mybatisplus.pojo.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; //可能是由于没有使用web包依赖,这里要加入classes指定启动类 @SpringBootTest(classes = MybatisPlusApplication.class) public class MybatisPlusTest { @Autowired private UserMapper userMapper; @Test public void testSelect(){ //通过条件构造器查询list集合 null表示没有条件 List<User> users = userMapper.selectList(null); users.forEach(System.out::println); } }
加入日志功能 #
配置application.yml加入日志
#日志 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
效果
- 如上图,查询的字段名来自于实体类属性