Spring boot 整合Mybatis 【springboot整合持久层技术系列】

前言:

        前面一篇文章讲了Spring Boot中最简单的数据持久化方案JdbcTemplate,JdbcTemplate虽然简单,但是用的并不多,因为它没有MyBatis方便,在Spring+SpringMVC中整合MyBatis步骤还是有点复杂的,要配置多个Bean,Spring Boot中对此做了进一步的简化,使MyBatis基本上可以做到开箱即用,本文就来看看在Spring Boot中MyBatis要如何使用

 同样导入Maven依赖

 注意:mysql版本不能过低,可以看一下自己电脑中的mysql版本

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.23</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.7.RELEASE</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>

创建一个User实体类

package com.example.demo.pojo;

public class User {
    private Integer id;
    private String username;
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

配置数据源:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.url=jdbc:mysql://localhost:3306/ssmbuild?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC

UserMapper

package com.example.demo.mapper;

import com.example.demo.pojo.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {

        List<User> getUserList();
}

UserMapper.xml 

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="getUserList" resultType="com.example.demo.pojo.User" >
        select * from user
    </select>

</mapper>

测试类:

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    UserMapper userMapper;

    @Test
    void contextLoads() {
        List<User> userList=userMapper.getUserList();
        System.out.println(userList);
    }
}

我们可以将mapper.xml文件放在不同位置上:

  • 位置一:

UserMapper和UserMapper.xml文件放在同一个文件下:

但是这个时候默认下会出现一个问题:

生成的target文件中扫描不到UserMapper.xml文件,因为xml文件推荐是放在resource下的,所以这个时候我们需要在pom文件中

添加配置

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
</resources>
  •  位置二:

我们在resource下把xml文件放在目录一致的位置,即可(注意: 他们的目录结构都是一样的,这样就 可以匹配到)

  • 位置三: 

如果我们想把mapper.xml文件随便放在resources下,我们需要在.properties文件中添加mapper文件映射

mybatis.mapper-locations=classpath:/mapper/*.xml

 这样我们就可以扫描到了

猜你喜欢

转载自blog.csdn.net/qq_30631063/article/details/108170152