Spring Boot整合MyBatis-Plus详细指南

引言: MyBatis Plus是在MyBatis基础上的增强工具,提供了更加便捷的开发方式。本文将详细介绍如何整合Spring Boot和MyBatis Plus,以及如何使用它们来开发数据库操作。让我们开始吧!

1. 引入依赖

在 Spring Boot 项目的 pom.xml 文件中添加 MyBatis Plus 的依赖:

xml 复制代码
<dependency> 
   <groupId>com.baomidou</groupId> 
   <artifactId>mybatis-plus</artifactId> 
   <version>3.4.3.3</version> 
</dependency>

2. 配置数据源

在 Spring Boot 项目中,我们可以使用 Spring Boot 自带的配置类。在 com.example.demo 包下创建一个 MybatisPlusConfig.java 文件,代码如下:

ini 复制代码
# 使用自己的数据库配置 
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC 
spring.datasource.username=root spring.datasource.password=root 
# 配置 MyBatis Plus 数据源 
mybatis-plus.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC 
mybatis-plus.datasource.username=root 
mybatis-plus.datasource.password=root 
mybatis-plus.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3. 配置 MyBatis Plus

java 复制代码
@Configuration 
public class MybatisPlusConfig {

    @Bean 
    public MapperScannerConfigurer mapperScannerConfigurer() { 
        MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
        scannerConfigurer.setBasePackage("com.example.demo.mapper"); 
        return scannerConfigurer; 
    } 
    @Bean 
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) { 
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); 
        sessionFactory.setDataSource(dataSource); 
        sessionFactory.setTypeAliasesPackage("com.example.demo.entity"); 
        sessionFactory.setMapperLocations(new
        PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml")); 
        return sessionFactory; 
    } 
    @Bean 
    public TypeReference<List<User>> userListTypeRef() { 
        return new TypeReference<List<User>>() {}; 
    } 
}

在 MybatisPlusConfig 类中,我们配置了 MapperScannerConfigurer 和 SqlSessionFactoryBean。MapperScannerConfigurer 用于自动扫描 Mapper 接口的包路径,SqlSessionFactoryBean 用于创建 SqlSessionFactory,它会自动加载 Mapper.xml 文件。

4. 创建实体类

在 com.example.demo 包下创建一个 User.java 文件,代码如下:

kotlin 复制代码
public class User { 
    private Long id; 
    private String name; 
    private Integer age; 
    // 省略 getter 和 setter 方法 
}

5. 创建 Mapper 接口

在 com.example.demo.mapper 包下创建一个 UserMapper.java 文件,代码如下:

js 复制代码
@Mapper public interface UserMapper { 

    @Select("SELECT * FROM user WHERE name = #{name}") 
    User findByName(@Param("name") String name); 
    
    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") 
    void add(User user); 
    
    @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}") 
    void update(User user); 
    
    @Delete("DELETE FROM user WHERE id = #{id}") 
    void delete(@Param("id") Long id); 
}

在 UserMapper 类上添加 @Mapper 注解,表示它是一个 Mapper 接口。在接口中定义了插入、更新、删除和查询用户信息的方法。

6. 创建 Service 类

在 com.example.demo.service 包下创建一个 UserService.java 文件,代码如下:

typescript 复制代码
@Service 
public class UserService { 
    @Autowired 
    private UserMapper userMapper; 
    
    public List<User> list() { 
    return userMapper.list(); 
    } 
    
    public User findByName(String name) { 
    return userMapper.findByName(name); 
    } 
    
    public void add(User user) { 
    userMapper.add(user); 
    } 
    
    public void update(User user) { 
    userMapper.update(user); 
    } 
    
    public void delete(Long id) { 
    userMapper.delete(id);
    } 
}

在 UserService 类上添加 @Service 注解,表示它是一个 Service 类。在类中使用 @Autowired 注解注入 UserMapper 对象,用于调用 Mapper 接口中的方法。

7. 创建 Controller 层

在 com.example.demo.controller 包下创建一个 UserController.java 文件,代码如下:

less 复制代码
@RestController 
@RequestMapping("/user") 
public class UserController {

    @Autowired 
    private UserService userService; 
    @GetMapping("") 
    public List<User> list() { 
    return userService.list(); 
    } 
    
    @GetMapping("/{id}") 
    public User findByName(@PathVariable String name) { 
    return userService.findByName(name); 
    } 
    
    @PostMapping("") 
    public void add(User user) { 
    userService.add(user); 
    } 
    
    @PutMapping("/{id}") 
    public void update(@PathVariable Long id, User user) { 
    user.setId(id); 
    userService.update(user); 
    } 
    
    @DeleteMapping("/{id}") 
    public void delete(@PathVariable Long id) { 
    userService.delete(id); 
    } 
}

在 UserController 类上添加 @RestController 注解,表示它是一个 REST 风格的控制器。在类中使用 @Autowired 注解注入 UserService 对象,用于调用 Service 类中的方法。

8. 运行应用程序

启动 Spring Boot 应用程序,打开浏览器访问 [http://localhost:8080/user,可以看到以下页面:\]

css 复制代码
[     {     "id": 1,     "name": "张三",     "age": 20     },     { "id": 2,     "name": "李四",     "age": 22     } ]

这是 Spring Boot 整合 MyBatis Plus 的一个简单示例。在实际开发中,我们可以使用 MyBatis Plus 提供的更多功能,例如分页、排序、级联查询等。

refs

# 35岁愿你我皆向阳而生

# 深入解读Docker的Union File System技术

# 说一说注解@Autowired @Resource @Reference使用场景

# 面对"魔咒"改变才是唯一的前路

# 编写Dockerfile和构建自定义镜像的步骤与技巧

# 一起来学习@PostConstruct注解

相关推荐
loser.loser15 分钟前
QQ邮箱发送验证码(Springboot)
java·spring boot·mybatis
皮皮高21 分钟前
itvbox绿豆影视tvbox手机版影视APP源码分享搭建教程
android·前端·后端·开源·tv
弱冠少年25 分钟前
golang入门
开发语言·后端·golang
Humbunklung28 分钟前
Rust 函数
开发语言·后端·rust
喜欢踢足球的老罗34 分钟前
在Spring Boot 3.3中使用Druid数据源及其监控功能
java·spring boot·后端·druid
jakeswang1 小时前
StarRocks
后端·架构
龙云飞谷1 小时前
从原理到调参,小白也能读懂的大模型微调算法Lora
后端
荣江1 小时前
【实战】基于 Tauri 和 Rust 实现基于无头浏览器的高可用网页抓取
后端·rust
寻月隐君1 小时前
Web3实战:Solana CPI全解析,从Anchor封装到PDA转账
后端·web3·github
程序员小假1 小时前
说一说 SpringBoot 中 CommandLineRunner
java·后端