引言
我们都非常熟悉MyBatis这一框架,可以说是非常便捷的轻量级持久层ORM框架,便于开发者们对数据库进行操作。
MyBatis-Plus
1.找到MyBatis-Plus官网
首先要引入MyBatis的Maven依赖,如果是spring boot则可引入starter包,更加便捷
【数据库数据源在application配置文件里自定义配置】
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.2</version>
</dependency>
既然是持久层框架,那么肯定要有数据库,官网的数据库脚本如下
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');
创建实体类
package com.tobie.mybatisplusdemo.pojo;
import com.baomidou.mybatisplus.annotation.OrderBy;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Tobieance
* @description
* @date 2023-10-09 08:35
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
2、MyBatis-Plus基础CRUD
一些基础的CRUD基础操作都已实现,只需要直接继承官方提供的接口即可
甚至不需要像MyBatis一样创建mapper映射文件
package com.tobie.mybatisplusdemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tobie.mybatisplusdemo.pojo.User;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Tobieance
* @description
* @date 2023-10-09 08:36
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
测试代码
@Test
void testSelectAll() {
List<User> userList = userMapper.selectList(null);
for (val u:userList) {
log.info(u.toString());
}
}
测试结果
3、MyBatis-Plus注解
MP提供了很丰富的注解供开发者使用,以下只拿三个举例说明
- @TableName
- 描述:表名注解,标识实体类对应的表
- 使用位置:实体类
- @TableId
- 描述:主键注解
- 使用位置:实体类主键字段
- @OrderBy
- 内置 SQL 默认指定排序,优先级低于 wrapper 条件查询
- asc:是否正序,默认为false
- sort:默认值为Short类型的最小值
4、MyBatis-Plus 条件构造器(核心)
条件构造器是MyBatis-Plus功能的核心,各种条件的筛选都由条件构造器生成
AbstractWrapper:
QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
提供各种方法来进行筛选,如notlike,eq,in,or等等与sql关键字相似的方法
具体参考官方文档
5、实践(注解,条件构造器)
实体类:
package com.tobie.mybatisplusdemo.pojo;
import com.baomidou.mybatisplus.annotation.OrderBy;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Tobieance
* @description
* @date 2023-10-09 08:35
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class User {
@TableId
private Long id;
private String name;
@OrderBy(asc = true)
private Integer age;
private String email;
}
测试类
@Test
void testSelect() {
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
queryWrapper.select("name","age","email");
List<User> userList = userMapper.selectList(queryWrapper);
for (val u:userList) {
log.info(u.toString());
}
}
测试结果:
只选择name,age和email字段,并且以age升序排列
- MyBatis-Plus MyBatis 代码 Plus代码生成mybatis-plus插件mybatis 生成器mybatis-plus mybatis代码 自动生成mybatis-plus mybatis代码 mybatis-plus mybatis代码plus 代码生成mybatis-plus mybatis代码 mybatis-plus mybatis-plus mybatis plus mybatis-plus springboot mybatis mapper mybatis-plus springboot mybatis plus mybatis-plus mybatisplus mybatis java