MyBatisPlus插件使用
时间: 2024-12-26 19:23:19 浏览: 68
### MyBatisPlus 插件使用教程
#### 项目依赖引入
为了能够顺利使用 MyBatisPlus 提供的功能,首先需要在项目的 `pom.xml` 文件中加入相应的依赖。这一步骤确保了后续开发过程中可以调用框架所提供的 API。
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本号</version>
</dependency>
```
#### 配置文件设置
接着,在 application.yml 或者 application.properties 中完成数据源及其他必要参数的设定。通过这种方式来指定连接数据库的信息以及其他高级选项,例如日志级别等[^1]。
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
```
#### 实体类定义
创建对应的实体类用于映射数据库中的表格字段。利用 Lombok 注解简化 getter/setter 方法编写工作量的同时也提高了代码可读性和维护效率。
```java
@Data
@TableName("user")
public class User {
private Long id;
private String name;
private Integer age;
}
```
#### Mapper接口声明
基于继承 BaseMapper 接口的方式快速获得 CRUD 基础能力而无需额外编码实现;如果存在特殊查询需求,则可以在该层面上进一步扩展自定义 SQL 语句逻辑。
```java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {}
```
#### Service服务层构建
负责业务处理流程控制和服务封装职责划分。通常情况下会在此处注入 Mapper 对象并调用其内部的方法来进行持久化操作。
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.selectList(null);
}
// 更多功能...
}
```
#### Controller控制器设计
作为前端请求入口点接收 HTTP 请求并将结果返回给客户端显示。一般而言,这里主要涉及 RESTful API 设计模式下的 GET/POST 等类型的路由路径匹配规则制定。
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public ResponseEntity<List<User>> getUsers() {
return new ResponseEntity<>(userService.getAllUsers(), HttpStatus.OK);
}
// 其他API端点...
}
```
#### 插件注册与配置
MyBatis Plus 自带多种实用工具型插件支持开发者更便捷高效地开展日常编程活动。下面列举几个常用的例子说明它们的作用范围及其应用场景:
##### 分页插件 PageHelper
允许应用程序轻松实现分页功能而不必手动拼接复杂的 LIMIT 子句。只需简单几行代码就能让整个应用具备强大的分页特性[^2]。
```java
@Configuration
@EnableTransactionManagement
@MapperScan("com.example.demo.mapper") // 替换成自己的包名
public class MyBatisConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
```
##### 动态SQL生成器 SqlInjector
提供了一种灵活的方式来动态调整最终执行的 SQL 文本内容。这对于那些希望减少硬编码数量或者提高程序灵活性的人来说非常有用[^3]。
```java
// 可以在全局配置里开启自动填充等功能
mybatis-plus.global-config.db-config.id-type=auto
```
##### 数据库字段自动填充 MetaObjectHandler
当涉及到新增记录时,某些特定时间戳或者其他元属性可能总是期望被赋予默认值而非留空等待人工输入。此时就可以借助此类插件帮助我们自动化这一过程。
```java
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now,"");
}
}
```
阅读全文
相关推荐

















