Spring Boot整合MyBatis

技术趋势洞察 2021-01-22 ⋅ 47 阅读

简介

MyBatis是一个开源的持久化框架,通过配置文件和Java注解将SQL语句与Java对象进行映射,提供了方便、快捷和灵活的数据库操作方式。Spring Boot是一种快速开发微服务的框架,提供了自动化配置和约定大于配置的原则,极大地简化了项目的搭建和配置过程。本文将介绍如何在Spring Boot中整合MyBatis,以便在项目中使用MyBatis进行数据库操作。

准备工作

在开始之前,需要准备以下环境:

  1. JDK 1.8及以上版本。
  2. Maven作为项目构建工具。
  3. Spring Boot 2.x版本。
  4. MyBatis和MyBatis-Spring的依赖。

创建Spring Boot项目

首先,使用Spring Initializr创建一个新的Spring Boot项目。打开Spring Initializr网站,填写相应的配置信息,点击"Generate"按钮下载生成的项目文件。

下载完成后,解压项目文件,并使用IDE打开项目。

添加依赖

打开项目的pom.xml文件,添加以下依赖:

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

    <!-- MyBatis和MyBatis-Spring依赖 -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>x.x.x</version> <!-- 指定MyBatis-Spring版本 -->
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>x.x.x</version> <!-- 指定MyBatis版本 -->
    </dependency>

    <!-- 数据库驱动依赖,根据实际使用的数据库选择 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

注意:在添加MyBatis和MyBatis-Spring依赖时,需要指定相应的版本号。

配置数据源

application.properties(或application.yml)文件中配置数据库连接信息,示例如下:

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

创建数据源配置

创建一个名为DataSourceConfig的Java类,用于配置数据源和事务管理器。代码如下:

@Configuration
@MapperScan("com.example.mapper") // 指定Mapper接口所在的包路径
public class DataSourceConfig {

    @Autowired
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
        dataSource.setUrl(env.getProperty("spring.datasource.url"));
        dataSource.setUsername(env.getProperty("spring.datasource.username"));
        dataSource.setPassword(env.getProperty("spring.datasource.password"));
        return dataSource;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        return sessionFactory.getObject();
    }

    @Bean
    public DataSourceTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

创建Mapper接口和XML文件

创建一个名为UserMapper的Java接口和对应的XML文件。UserMapper负责定义数据库操作的方法,而XML文件则用于编写具体的SQL语句。代码如下:

UserMapper.java

public interface UserMapper {

    User findUserById(Long id);

    List<User> findAllUsers();

    void insertUser(User user);

    void updateUser(User user);

    void deleteUser(Long id);
}

UserMapper.xml

<mapper namespace="com.example.mapper.UserMapper">

    <select id="findUserById" resultType="com.example.model.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <select id="findAllUsers" resultType="com.example.model.User">
        SELECT * FROM user
    </select>

    <insert id="insertUser">
        INSERT INTO user(name, age) VALUES (#{name}, #{age})
    </insert>

    <update id="updateUser">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>

    <delete id="deleteUser">
        DELETE FROM user WHERE id = #{id}
    </delete>

</mapper>

创建实体类

创建一个名为User的Java类,表示数据库中的用户表。代码如下:

public class User {

    private Long id;
    private String name;
    private Integer age;

    // 省略getter和setter
}

编写业务逻辑

创建一个名为UserService的Java类,用于处理用户相关的业务逻辑。代码如下:

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public User findUserById(Long id) {
        return userMapper.findUserById(id);
    }

    public List<User> findAllUsers() {
        return userMapper.findAllUsers();
    }

    public void insertUser(User user) {
        userMapper.insertUser(user);
    }

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

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

创建控制器

创建一个名为UserController的Java类,用于处理用户相关的HTTP请求。代码如下:

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

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

    @GetMapping
    public List<User> getAllUsers() {
        return userService.findAllUsers();
    }

    @PostMapping
    public void createUser(@RequestBody User user) {
        userService.insertUser(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);
    }
}

启动项目

在IDE中运行项目的主类,启动Spring Boot应用。

测试

可以使用工具(如Postman)发送HTTP请求,测试控制器的相关接口。例如:

  1. 发送GET请求http://localhost:8080/users,获取所有用户。
  2. 发送GET请求http://localhost:8080/users/1,获取ID为1的用户。
  3. 发送POST请求http://localhost:8080/users,创建新用户。
  4. 发送PUT请求http://localhost:8080/users/1,更新ID为1的用户。
  5. 发送DELETE请求http://localhost:8080/users/1,删除ID为1的用户。

总结

本文介绍了如何在Spring Boot项目中整合MyBatis,以便使用MyBatis进行数据库操作。首先,我们添加了MyBatis和MyBatis-Spring的依赖;然后,配置了数据源和事务管理器;接着,创建了Mapper接口和XML文件;最后,编写了业务逻辑和控制器,完成了整合和测试工作。通过整合MyBatis,我们可以方便地进行数据库操作,提高了开发效率和代码质量。


全部评论: 0

    我有话说: