MyBatis-Plus
MyBatis-Plus 是 MyBatis 的增强工具,核心作用是简化 CRUD 操作和提升开发效率。它提供基础的增删改查方法、分页插件、条件构造器以及代码生成器,帮助减少重复代码量。MyBatis-Plus 不支持自动建表,专注于简化数据库操作,而表结构管理通常需借助其他工具
1. 对象元数据
- 元数据:指的是描述数据的数据。在 MyBatis 中,对象的元数据指的是 Java 类的属性、类型、方法等信息。
- 封装:MyBatis 通过
MetaObject
类封装对象的元数据,允许在运行时动态地获取和设置对象的属性。
MetaObject 类
- 定义:
MetaObject
是 MyBatis 提供的一个接口,封装了对 Java 对象的元数据操作。 - 功能:
- 获取属性:可以通过名称获取对象的属性值。
- 设置属性:可以通过名称设置对象的属性值。
- 检查属性是否存在:可以判断对象是否具有某个属性。
2.处理器
MetaObjectHandler
- 是 MyBatis-Plus 提供的用于自动填充字段的处理器。它允许开发者在执行插入或更新操作时,自动填充某些字段的值,比如创建时间、修改时间等。
使用步骤
- 实现接口:创建一个类实现
MetaObjectHandler
接口。 - 重写方法:
insertFill(MetaObject metaObject)
:在插入时填充字段。updateFill(MetaObject metaObject)
:在更新时填充字段。
具体应用:
- MyBatis-Plus 的插入或更新操作,框架会在执行前自动查找所有实现了
MetaObjectHandler
接口的处理器 - MyBatis-Plus 框架本身会在执行插入(
save
)或更新(update
)操作时,自动查找并调用实现了MetaObjectHandler
接口的类。
3.SQL 映射
@Mapper
@Mapper
注解确实将 MyBatis 的数据库操作接口映射到 Spring Boot 中,并将其注册为 Spring 管理的 Bean
MyBatis 的 Mapper 接口中的方法可以通过两种方式来实现对应的数据库操作:
注解方式:直接在方法上使用注解(如
@Select
、@Update
、@Delete
等)来定义 SQL 语句。这种方式简单直观,适合 SQL 语句较短的情况。XML 映射文件:在 XML 文件中定义 SQL 语句和映射。适合 SQL 语句复杂或需要动态条件的情况,比如你之前定义的
list
方法。
// User.java (实体类)
package com.example.demo.entity;
public class User {
private Long id;
private String name;
private String email;
// Getters and Setters
}
// UserMapper.java (Mapper 接口)
package com.example.demo.mapper;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users")
List<User> findAll();
}
// UserService.java (服务类)
package com.example.demo.service;
@Service
public class UserService {
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.findAll();
}
}
// UserController.java (控制器)
package com.example.demo.controller;
@RestController
public class UserController {
private UserService userService;
@GetMapping("/users")
public List<User> getUsers() {
return userService.getAllUsers();
}
}