MyBatis-Plus初次实践(附代码)
引言
我们都非常熟悉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升序排列
The whole significance of life lies in the unremitting efforts to explore the unknown and increase knowledge.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了