手把手教你SpringBoot整合Mybatis

当我们使用Spring Boot开发Web应用时,通常需要使用到Mybatis来操作数据库。本文将手把手教你如何在Spring Boot中整合Mybatis,包括配置Mybatis、编写Mapper接口、使用注解和XML方式进行SQL映射等。

1. 配置Mybatis

首先,我们需要在pom.xml文件中添加Mybatis和Mybatis-Spring的依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

然后,在application.properties文件中添加Mybatis的配置:

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Mybatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.entity

在上面的配置中,我们指定了数据库的连接信息和Mybatis的配置信息。其中,mybatis.mapper-locations指定了Mapper接口的XML文件所在的路径,mybatis.type-aliases-package指定了实体类的包名。

2. 编写Mapper接口

接下来,我们需要编写Mapper接口,用于定义SQL语句和参数映射。Mapper接口可以使用注解方式或XML方式进行定义。

2.1 使用注解方式

以下是一个使用注解方式定义Mapper接口的示例:

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(@Param("id") Long id);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    int insert(User user);

    @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
    int update(User user);

    @Delete("DELETE FROM user WHERE id = #{id}")
    int deleteById(@Param("id") Long id);
}

在上面的示例中,使用@Mapper注解标记了一个Mapper接口,定义了四个方法,分别对应了查询、插入、更新和删除操作。使用@Select、@Insert、@Update、@Delete注解定义了SQL语句和参数映射。

2.2 使用XML方式

以下是一个使用XML方式定义Mapper接口的示例:

public interface UserMapper {
    User findById(Long id);

    int insert(User user);

    int update(User user);

    int deleteById(Long id);
}

在上面的示例中,定义了四个方法,分别对应了查询、插入、更新和删除操作。没有使用注解定义SQL语句和参数映射,而是使用XML文件进行定义。

在resources目录下创建mapper目录,并在其中创建UserMapper.xml文件,定义SQL语句和参数映射:

<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="findById" parameterType="java.lang.Long" resultType="com.example.demo.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="com.example.demo.entity.User">
        INSERT INTO user(name, age) VALUES(#{name}, #{age})
    </insert>

    <update id="update" parameterType="com.example.demo.entity.User">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>

    <delete id="deleteById" parameterType="java.lang.Long">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

在上面的XML文件中,使用标签指定了Mapper接口的命名空间,使用