欢迎访问宙启技术站
智能推送

springboot与mybatis整合的示例分析

发布时间:2023-05-14 08:56:29

Spring Boot是一个非常流行的Java开发框架,而MyBatis则是一个非常流行的Java持久层框架,两者的结合可以为Java开发带来很多便利,本文将通过一个示例来分析Spring Boot与MyBatis的整合方式。

1. 配置pom.xml

首先我们需要在pom.xml文件中添加一些约束,这些约束指定我们要使用的Spring Boot和MyBatis版本等,具体内容如下:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.boot.version>2.2.6.RELEASE</spring.boot.version>
    <mybatis.spring.boot.version>2.0.0</mybatis.spring.boot.version>
    <mysql.connector.java.version>8.0.19</mysql.connector.java.version>
</properties>
    
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.version}</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.connector.java.version}</version>
    </dependency>
</dependencies>

2. 配置application.properties

接着,我们需要在application.properties文件中指定一些关键配置,包括数据库地址、用户名和密码等,具体如下:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring-boot-mybatis-demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

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

3. 创建实体类

在该示例中,我们可以通过创建一个User实体类来演示MyBatis的CRUD操作,具体如下:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

需要注意的是,该实体类使用了Lombok注解@Data,因此无需手动编写getter和setter方法。

4. 创建Mapper接口

Mapper接口是一个可以定义SQL语句的Java接口,通过在该接口中定义一些方法,我们可以在MyBatis中进行CRUD操作。此处我们可以创建一个UserMapper接口,如下:

@Mapper
public interface UserMapper {
    List<User> findAll();
    User findById(Integer id);
    int insert(User user);
    int update(User user);
    int delete(Integer id);
}

需要注意的是,在这里我们使用了@Mapper注解,该注解可以用于Mapper接口中,它可以告诉Spring框架该接口会在运行时生成相应的实现类。

5. 编写Mapper的SQL语句

我们在mapper目录下创建一个UserMapper.xml文件,其中定义了与Mapper接口对应的相应SQL语句,具体如下:

<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="findAll" resultType="com.example.demo.entity.User">
        SELECT *
        FROM user
    </select>
 
    <select id="findById" parameterType="Integer" resultType="com.example.demo.entity.User">
        SELECT *
        FROM user
        WHERE id = #{id}
    </select>
 
    <insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id">
        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="delete" parameterType="Integer">
        DELETE FROM user
        WHERE id = #{id}
    </delete>
</mapper>

需要注意的是,在SQL语句中,使用#{}来表示查询参数。

6. 编写Controller

最后,在UserController中定义一些接口来进行CRUD操作,如下:

@RestController
public class UserController {

    @Autowired
    UserMapper userMapper;

    //获取所有
    @RequestMapping("/getAll")
    public List<User> getAll() {
        return userMapper.findAll();
    }

    //根据id获取
    @RequestMapping("/getById/{id}")
    public User getById(@PathVariable int id) {
        return userMapper.findById(id);
    }

    //添加
    @RequestMapping("/add")
    public int addUser(User user) {
        return userMapper.insert(user);
    }

    //更新
    @RequestMapping("/update")
    public int updateUser(User user) {
        return userMapper.update(user);
    }

    //删除
    @RequestMapping("/delete/{id}")
    public int deleteById(@PathVariable int id) {
        return userMapper.delete(id);
    }
}

在该Controller中,我们注入了UserMapper接口实例,然后可以通过RequestMapping来定义一些接口供外部调用。

至此,我们已经完成了Spring Boot和MyBatis的整合,通过以上步骤,我们可以快速的进行Java提供的CRUD操作。

总结

Spring Boot和MyBatis的结合是一个非常常见的开发场景,它可以为Java开发者提供更加方便的编码体验。在本文中,我们通过一个示例来介绍了整个过程,希望对读者有所帮助。