Java 中 Spring Boot 使用 MyBatis 访问 MySql 数据库

1,241 阅读2分钟

上一篇文章,我们也介绍了访问 MySql 数据库 - Java 中 Spring Boot 使用 JdbcTemplate 访问 MySql 数据库。本文我们介绍 Java 中 Spring Boot 使用 MyBatis 访问 MySql 数据库。

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

代码演示的环境见文章 - Java 中 Spring Boot 使用 JdbcTemplate 访问 MySql 数据库。

添加依赖

在 pom.xml 中添加 myBatis 依赖:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.13</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

截止文章发布,mybatis 这里使用了最新版本 3.5.13 进行 Demo。

数据库配置信息

在 application.yml 中配置数据库信息如下:

# Server
server:
  port: 8081
# DataSource Config
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb_01
    username: root
    password:
    driver-class-name: com.mysql.cj.jdbc.Driver

当然,你也可以使用 application.properties 的写法。

创建 User 表

在 mysql 数据库 mydb_01 新建一个 User 表来测试:

user_table.png

表包含 id,name 和 age 字段。

创建 User 表映射

我们新建 User.java 文件:

import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
public class User {
    private Long id; // keyword auto increase
    private String name;
    private Integer age;

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

创建 User 表操作

我们新建 UserMapper.java 文件:

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Param;

@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}")
    int insert(@Param("name") String name, @Param("age") Integer age);
}

我们定义了接口文件,对表进行查询(根据姓名)和数据的插入。

读者可自行验证操作数据的插入和读取

pexels-enric-cruz-lópez-6642541.jpg

参考