欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 38. 如何在Spring Boot项目中集成MyBatis-Plus?

38. 如何在Spring Boot项目中集成MyBatis-Plus?

2024/10/24 5:18:46 来源:https://blog.csdn.net/zhzjn/article/details/142262578  浏览:    关键词:38. 如何在Spring Boot项目中集成MyBatis-Plus?

在Spring Boot项目中集成MyBatis-Plus相对简单,MyBatis-Plus是基于MyBatis的增强工具,提供了很多实用功能,如CRUD操作的自动生成、分页查询、条件构造器等。下面是详细的集成步骤:

1. 添加MyBatis-Plus依赖

首先,在Spring Boot项目的pom.xml中添加MyBatis-Plus的依赖。

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> <!-- 使用最新版 -->
</dependency>

2. 配置数据源和MyBatis-Plus

Spring Boot通常通过application.ymlapplication.properties来配置数据源和MyBatis-Plus。

  • application.yml 示例

spring:datasource:url: jdbc:mysql://localhost:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8username: rootpassword: passworddriver-class-name: com.mysql.cj.jdbc.Driver
​
mybatis-plus:mapper-locations: classpath:/mapper/*.xmltype-aliases-package: com.example.entity
  • application.properties 示例

spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
​
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.type-aliases-package=com.example.entity

3. 创建实体类和Mapper接口

在MyBatis-Plus中,实体类对应数据库中的表,而Mapper接口提供了对数据库的操作方法。

  • 实体类

创建一个与数据库表对应的实体类,如User类。

package com.example.entity;
​
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
​
@TableName("users")  // 对应数据库表名
public class User {
​@TableId(value = "id")  // 主键private Long id;private String username;private String email;
​// Getters and Setters
}
  • Mapper接口

创建一个Mapper接口,继承BaseMapper接口即可自动具备基本的CRUD操作。

package com.example.mapper;
​
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.User;
import org.apache.ibatis.annotations.Mapper;
​
@Mapper
public interface UserMapper extends BaseMapper<User> {// 其他自定义的查询方法可以在这里添加
}

4. 启动类配置

在Spring Boot的启动类上添加@MapperScan注解,用于指定Mapper接口所在的包路径。

package com.example;
​
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
@SpringBootApplication
@MapperScan("com.example.mapper")  // 扫描Mapper接口
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

5. 使用MyBatis-Plus的CRUD功能

现在可以在Service类中使用MyBatis-Plus提供的CRUD功能了。

  • Service层示例

package com.example.service;
​
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.springframework.stereotype.Service;
​
import java.util.List;
​
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
​public List<User> getAllUsers() {return list();}
​public User getUserById(Long id) {return getById(id);}
​public boolean createUser(User user) {return save(user);}
​public boolean updateUser(User user) {return updateById(user);}
​public boolean deleteUser(Long id) {return removeById(id);}
}
  • Controller层示例

package com.example.controller;
​
import com.example.entity.User;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
​
import java.util.List;
​
@RestController
@RequestMapping("/users")
public class UserController {
​@Autowiredprivate UserService userService;
​@GetMappingpublic List<User> getAllUsers() {return userService.getAllUsers();}
​@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {return userService.getUserById(id);}
​@PostMappingpublic boolean createUser(@RequestBody User user) {return userService.createUser(user);}
​@PutMappingpublic boolean updateUser(@RequestBody User user) {return userService.updateUser(user);}
​@DeleteMapping("/{id}")public boolean deleteUser(@PathVariable Long id) {return userService.deleteUser(id);}
}

6. 使用条件构造器和分页

MyBatis-Plus 提供了强大的条件构造器和分页支持,可以方便地进行复杂的查询操作。

  • 条件构造器

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
​
public List<User> findUsersByCondition(String username, String email) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();if (username != null) {queryWrapper.like("username", username);}if (email != null) {queryWrapper.eq("email", email);}return list(queryWrapper);
}
  • 分页查询

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
​
public IPage<User> getUserPage(int pageNum, int pageSize) {Page<User> page = new Page<>(pageNum, pageSize);return page(page);
}

7. 其他配置和插件

MyBatis-Plus还支持分页插件、乐观锁插件、SQL性能分析插件等,具体使用方式可以参考官方文档。

  • 分页插件配置

在配置类中添加分页插件:

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
​
@Configuration
public class MyBatisPlusConfig {
​@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}
}

8. 总结

通过上述步骤,你可以在Spring Boot项目中集成MyBatis-Plus,并使用它提供的CRUD、条件构造器、分页等功能。MyBatis-Plus极大地简化了数据库操作,减少了代码量,同时保持了对SQL的灵活控制。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com