Spring Boot 2整合MyBatis Plus详细指南

发布于:2025-07-31 ⋅ 阅读:(13) ⋅ 点赞:(0)

1. 环境准备

  • Spring Boot版本:2.x(推荐2.7.x)
  • MyBatis Plus版本:3.5.x(兼容Spring Boot 2)
  • 数据库:MySQL 8.0+(其他数据库需调整驱动)

2. 创建项目并添加依赖

pom.xml中添加核心依赖:

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- MyBatis Plus Starter -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3.1</version>
    </dependency>

    <!-- 数据库驱动(以MySQL为例) -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Lombok简化代码 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>


3. 配置数据源与MyBatis Plus

application.yml中配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

# MyBatis Plus配置
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true  # 开启驼峰命名转换
  global-config:
    db-config:
      id-type: auto  # 主键生成策略(数据库自增)
  mapper-locations: classpath:mapper/*.xml  # XML映射文件路径


4. 实体类与Mapper

(1) 实体类(使用Lombok简化):

import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;

@Data
@TableName("user")  // 对应数据库表名
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

(2) Mapper接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {
    // 继承BaseMapper即拥有CRUD基础方法
}

(3) 启用Mapper扫描: 在启动类添加@MapperScan注解:

@SpringBootApplication
@MapperScan("com.example.demo.mapper")  // 替换为实际Mapper包路径
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}


5. Service层与Controller层

(1) Service接口

public interface UserService extends IService<User> { }

(2) Service实现类

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> 
    implements UserService { 
}

(3) Controller示例

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getById(@PathVariable Long id) {
        return userService.getById(id);
    }

    @PostMapping
    public boolean save(@RequestBody User user) {
        return userService.save(user);
    }
}


6. 高级功能配置

(1) 分页插件

@Configuration
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

(2) 逻辑删除配置: 在application.yml中启用:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted  # 逻辑删除字段名
      logic-delete-value: 1        # 删除状态值
      logic-not-delete-value: 0    # 未删除状态值


7. 测试验证

使用@SpringBootTest进行单元测试:

@SpringBootTest
class UserMapperTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    void testSelect() {
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }
}


8. 常见问题解决
  1. 数据库连接失败

    • 检查spring.datasource配置
    • 确认MySQL服务已启动
    • 添加&allowPublicKeyRetrieval=true到URL(MySQL 8.0+)
  2. Mapper扫描失败

    • 确认@MapperScan路径正确
    • 检查Mapper接口是否添加@Repository@Mapper注解
  3. 字段映射错误

    • 开启驼峰命名:map-underscore-to-camel-case: true
    • 使用@TableField指定字段名:
      @TableField("user_name")
      private String name;
      

通过以上步骤,即可完成Spring Boot 2与MyBatis Plus的整合,快速实现高效数据操作。


网站公告

今日签到

点亮在社区的每一天
去签到