SpringBoot集成Mybatis实战指南与最佳实践

2026-06-16阅读 0热度 0
其他
目录

Spring Boot 和 MyBatis 的组合,在 Ja va 开发圈里几乎是“标配”级别的存在。Spring Boot 帮你省去了一堆繁琐的配置,让项目快速跑起来;MyBatis 则把 SQL 和 Ja va 代码优雅地解耦,灵活性和可控性都很出色。两者一结合,开发效率直接拉满。接下来,我们就一步步把这个组合装进你的项目里。先放一张整体架构图镇楼:

【ChatGPT自动生成系列】SpringBoot集成Mybatis

Spring Boot 集成 MyBatis

介绍

Spring Boot 是快速构建独立生产级应用的绝佳框架,而 MyBatis 作为一款久经考验的持久层框架,能与 Spring Boot 无缝配合,提供强大的数据库操作能力。这篇文章会带你走完整个集成流程,并给出常用的 CRUD 示例——看完后,你也能自己搭一套基础框架。

步骤

步骤一:创建 Spring Boot 项目

第一步,得先有个 Spring Boot 项目。推荐用 Spring Initializr 快速生成骨架,选好你需要的依赖和版本,一把梭。

步骤二:添加依赖

项目生成后,在 pom.xml 里补上 MyBatis 和数据库驱动的依赖。下面是一个最小依赖集合:


    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
        org.mybatis.spring.boot
        mybatis-spring-boot-starter
        2.2.0
    
    
    
        com.h2database
        h2
        runtime
    
    

注意:如果实际使用 MySQL,记得把 h2 换成 mysql-connector-ja va,版本号别搞错。

步骤三:配置数据库连接

application.propertiesapplication.yml 中配置数据源。以 MySQL 为例:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

别忘了告诉 MyBatis 你的 Mapper XML 文件在哪儿,否则启动时会报绑定失败的错误:

mybatis.mapper-locations=classpath:mapping/*.xml

这一步是常见的坑,很多新手会忽略这个配置。

步骤四:创建实体类

写一个 POJO,映射数据库表字段。比如一个简单的 User 类:

public class User {
    private Long id;
    private String username;
    private String password;
    // 其他字段...
    // getter 和 setter 方法...
}

字段类型尽量和表结构保持一致,主键推荐用包装类 Long 而不是基本类型 long,方便判断 null 值。

步骤五:创建 Mapper 接口

定义一个 Mapper 接口,声明数据库操作方法。注意是接口,不是类:

public interface UserMapper {
    void insert(User user);
    void update(User user);
    void delete(Long id);
    User findById(Long id);
    List findAll();
}

方法名和参数类型看着来,后面 XML 文件里会一一对应。

步骤六:创建 Mapper XML 文件

resources/mapping/ 目录下新建 UserMapper.xml(名称和接口对应),写入 SQL:


    
        INSERT INTO user (username, password) VALUES (#{username}, #{password})
    
    
        UPDATE user SET username=#{username}, password=#{password} WHERE id=#{id}
    
    
        DELETE FROM user WHERE id=#{id}
    
    
    

namespace 必须写接口的全限定名,id 对应方法名,parameterTyperesultType 别写错。

步骤七:编写 Service 层

Service 层负责业务逻辑,通过注入 Mapper 来操作数据库。先定接口:

public interface UserService {
    void addUser(User user);
    void updateUser(User user);
    void deleteUser(Long id);
    User getUserById(Long id);
    List getAllUsers();
}

然后写实现类:

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public void addUser(User user) {
        userMapper.insert(user);
    }

    @Override
    public void updateUser(User user) {
        userMapper.update(user);
    }

    @Override
    public void deleteUser(Long id) {
        userMapper.delete(id);
    }

    @Override
    public User getUserById(Long id) {
        return userMapper.findById(id);
    }

    @Override
    public List getAllUsers() {
        return userMapper.findAll();
    }
}

注意要给实现类加上 @Service 注解,让它被 Spring 管理;@Autowired 注入 Mapper,如果报错可以检查一下 @MapperScan 有没有配。

步骤八:编写 Controller 层

最后写一个 REST 接口暴露出去:

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

    @PostMapping
    public void addUser(@RequestBody User user) {
        userService.addUser(user);
    }

    @PutMapping("/{id}")
    public void updateUser(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        userService.updateUser(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }

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

    @GetMapping
    public List getAllUsers() {
        return userService.getAllUsers();
    }
}

这样你就可以通过 POST /usersGET /users/1 等路径来操作数据了。

步骤九:运行项目

启动类上别忘了加 @MapperScan,指定 Mapper 接口所在的包路径,不然 Spring 会找不着 Bean 报异常:

package com.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan("com.demo.dao")
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

大功告成,启动项目,用 Postman 或 curl 测试一下 API 吧。

总结

从创建项目到跑通接口,整个集成过程并不复杂,重点在于配置的正确性和代码结构的清晰度。本文的示例虽然简单,但已经覆盖了最常用的增删改查操作,你完全可以在此基础上扩展出更复杂的业务逻辑。如果遇到问题,欢迎留言讨论。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策