快速开始
创建时间:2025-11-12 23:25
长度:2065
浏览:0
评论:0
MyBatis-Plus 的三层架构
1. Mapper 层(DAO 层) - 继承 BaseMapper
作用:直接与数据库交互,提供基础的 CRUD 操作。
2. Service 接口层 - 继承 IService
作用:定义业务逻辑接口,提供更高层次的封装。
3. Service 实现层 - 继承 ServiceImpl
作用:实现业务逻辑,调用 Mapper 层完成数据库操作。
Controller
↓ 调用
Service (UserService)
↓ 实现
ServiceImpl (UserServiceImpl)
↓ 继承 ServiceImpl<UserDao, User>
↓ 调用
Mapper/DAO (UserDao)
↓ 继承 BaseMapper<User>
↓ 操作
Database
添加信赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.14</version>
</dependency>注意:一般使用了MybatisPlus 之后就不要再导入Mybatis了,尽量避免它俩同时存在, 有可能出现一些版本差异的问题
1. 创建表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
id BIGINT NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);1.1 生成数据
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');2, 创建数据表对应的java类
放在用于存放的(entity、dao、model)的目录下
User.java
package org.huangcy.mybatisplusdemo.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
3. 创建mapper类
UserMapper.java
继续了BaseMapper类之后,几乎常见的CURD都有了,不需要我写这些常见的sql了;如果有特殊的需求,我们就可以写在UserMapper类里面,这时候就和普通的Mybatis一样了
记得这里要写spring 注解@resource
package org.huangcy.mybatisplusdemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import jakarta.annotation.Resource;
import org.huangcy.mybatisplusdemo.entity.User;
@Resource
public interface UserMapper extends BaseMapper<User> {
}4. 配置mapper的位置目录
在项目的启动文件处添加开启扫描mapper目录的配置
@MapperScan(basePackages = "org.huangcy.mybatisplusdemo.mapper")编写一个测试类
@Test
void testGetUserAll() {
System.out.println(userMapper.selectList(null));
}