当前位置:  首页>> 技术小册>> SpringBoot零基础到实战

MyBatis是一个开源的持久化框架,可以将Java对象映射到关系数据库中,提供了方便的数据库操作接口,让开发人员可以更加专注于业务逻辑的实现。

本文将介绍如何在Spring Boot中使用MyBatis,以及如何进行整合。我们将使用MySQL作为关系数据库,并演示如何使用MyBatis进行基本的CRUD操作。

环境搭建

在开始整合Spring Boot和MyBatis之前,需要先搭建好相关的环境。具体步骤如下:

1.安装MySQL数据库。可以从官网上下载MySQL Community Server,并按照安装指南进行安装。安装完成后,可以通过MySQL Workbench等工具连接到数据库。

2.创建数据库和表。在MySQL Workbench中执行以下SQL语句:

  1. CREATE DATABASE mybatis_demo;
  2. USE mybatis_demo;
  3. CREATE TABLE users (
  4. id INT PRIMARY KEY AUTO_INCREMENT,
  5. name VARCHAR(50),
  6. email VARCHAR(50),
  7. age INT
  8. );

3.添加相关依赖。在pom.xml中添加以下依赖:

  1. <dependencies>
  2. <!-- Spring Boot dependencies -->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <!-- MyBatis dependencies -->
  8. <dependency>
  9. <groupId>org.mybatis.spring.boot</groupId>
  10. <artifactId>mybatis-spring-boot-starter</artifactId>
  11. <version>2.2.0</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>mysql</groupId>
  15. <artifactId>mysql-connector-java</artifactId>
  16. <version>8.0.27</version>
  17. </dependency>
  18. </dependencies>

整合MyBatis

在添加了相关依赖后,就可以开始整合MyBatis了。下面将介绍具体步骤:

1.创建MyBatis配置文件。在src/main/resources目录下创建一个mybatis-config.xml文件,用于配置MyBatis的一些属性和插件。具体内容如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <setting name="mapUnderscoreToCamelCase" value="true"/>
  8. </settings>
  9. </configuration>

这里设置了一个属性,用于将数据库中下划线分隔的列名转换为Java驼峰命名的属性名。

2.创建Mapper接口和Mapper XML文件。在src/main/java/com/example/demo/mapper目录下创建一个UserMapper接口,用于定义数据库操作的方法。具体内容如下:

  1. package com.example.demo.mapper;
  2. import com.example.demo.entity.User;
  3. import java.util.List;
  4. public interface UserMapper {
  5. List<User> findAll();
  6. User findById(int id);
  7. void save(User user);
  8. void update(User user);
  9. void delete(int id);
  10. }

这里定义了五个方法,分别对应基本的CRUD操作。

接着,在src/main/resources目录下创建一个UserMapper.xml文件,用于定义SQL语句和映射关系。具体内容如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.example.demo.mapper.UserMapper">
  6. <resultMap id="userMap" type="com.example.demo.entity.User">
  7. <id property="id" column="id" />
  8. <result property="name" column="name" />
  9. <result property="email" column="email" />
  10. <result property="age" column="age" />
  11. </resultMap>
  12. <select id="findAll" resultMap="userMap">
  13. SELECT * FROM users
  14. </select>
  15. <select id="findById" parameterType="int" resultMap="userMap">
  16. SELECT * FROM users WHERE id = #{id}
  17. </select>
  18. <insert id="save">
  19. INSERT INTO users (name, email, age) VALUES (#{name}, #{email}, #{age})
  20. </insert>
  21. <update id="update">
  22. UPDATE users SET name = #{name}, email = #{email}, age = #{age} WHERE id = #{id}
  23. </update>
  24. <delete id="delete" parameterType="int">
  25. DELETE FROM users WHERE id = #{id}
  26. </delete>
  27. </mapper>

这里定义了五个SQL语句,分别对应基本的CRUD操作。同时,也定义了一个resultMap用于映射查询结果到Java对象。

3.创建Mapper接口实现类。在src/main/java/com/example/demo/mapper目录下创建一个UserMapperImpl类,用于实现UserMapper接口中的方法。具体内容如下:

  1. package com.example.demo.mapper;
  2. import com.example.demo.entity.User;
  3. import org.mybatis.spring.SqlSessionTemplate;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Repository;
  6. import java.util.List;
  7. @Repository
  8. public class UserMapperImpl implements UserMapper {
  9. @Autowired
  10. private SqlSessionTemplate sqlSession;
  11. @Override
  12. public List<User> findAll() {
  13. return sqlSession.selectList("findAll");
  14. }
  15. @Override
  16. public User findById(int id) {
  17. return sqlSession.selectOne("findById", id);
  18. }
  19. @Override
  20. public void save(User user) {
  21. sqlSession.insert("save", user);
  22. }
  23. @Override
  24. public void update(User user) {
  25. sqlSession.update("update", user);
  26. }
  27. @Override
  28. public void delete(int id) {
  29. sqlSession.delete("delete", id);
  30. }
  31. }

这里使用了SqlSessionTemplate来执行SQL语句,其中的方法名对应了Mapper XML文件中定义的SQL语句的id属性。

4.配置MyBatis和Mapper接口。在Spring Boot的配置文件application.properties中添加以下配置:

  1. mybatis.mapper-locations=classpath*:mapper/*.xml
  2. mybatis.type-aliases-package=com.example.demo.entity

这里指定了Mapper XML文件的位置和Java实体类的包名,让MyBatis能够自动扫描并绑定Mapper接口和XML文件。

5.创建Controller类。在src/main/java/com/example/demo/controller目录下创建一个UserController类,用于处理用户请求。具体内容如下:

  1. package com.example.demo.controller;
  2. import com.example.demo.entity.User;
  3. import com.example.demo.mapper.UserMapper;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. import java.util.List;
  7. @RestController
  8. @RequestMapping("/users")
  9. public class UserController {
  10. @Autowired
  11. private UserMapper userMapper;
  12. @GetMapping("")
  13. public List<User> findAll() {
  14. return userMapper.findAll();
  15. }
  16. @GetMapping("/{id}")
  17. public User findById(@PathVariable int id) {
  18. return userMapper.findById(id);
  19. }
  20. @PostMapping("")
  21. public void save(@RequestBody User user) {
  22. userMapper.save(user);
  23. }
  24. @PutMapping("/{id}")
  25. public void update(@PathVariable int id, @RequestBody User user) {
  26. user.setId(id);
  27. userMapper.update(user);
  28. }
  29. @DeleteMapping("/{id}")
  30. public void delete(@PathVariable int id) {
  31. userMapper.delete(id);
  32. }
  33. }

这里使用了@RestController注解来声明一个基于REST的控制器,同时使用@RequestMapping注解指定了请求路径。在控制器中,我们通过@Autowired注解将UserMapper注入到控制器中,然后分别实现了findAll、findById、save、update和delete等方法来处理对应的请求。

至此,我们已经完成了Spring Boot与MyBatis的整合工作。整个应用的代码已经可以在Spring Boot中运行了。在运行应用之前,需要启动一个MySQL数据库,并在其中创建一个名为test的数据库。

这里提供一个完整的项目结构:

  1. .
  2. ├── src
  3. ├── main
  4. ├── java
  5. └── com
  6. └── example
  7. └── demo
  8. ├── DemoApplication.java
  9. ├── controller
  10. └── UserController.java
  11. ├── entity
  12. └── User.java
  13. ├── mapper
  14. ├── UserMapper.java
  15. └── UserMapperImpl.java
  16. └── service
  17. └── UserService.java
  18. └── resources
  19. ├── application.properties
  20. ├── mapper
  21. └── UserMapper.xml
  22. └── schema.sql
  23. └── test
  24. └── java
  25. └── com
  26. └── example
  27. └── demo
  28. └── DemoApplicationTests.java
  29. └── pom.xml

在完成上述代码的编写之后,可以在终端中进入项目目录,执行以下命令运行应用:

  1. mvn spring-boot:run

接着,在浏览器中访问 http://localhost:8080/users 即可访问用户列表


该分类下的相关小册推荐: