Spring Boot 整合持久层技术——Mybatis配置方法详解

一、依赖与配置

数据库很简单
在这里插入图片描述
依赖
在这里插入图片描述
Spring帮助我们导入依赖之后,我们需要对依赖进行增加和修改

 <dependency>
    <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-jdbc</artifactId>
 </dependency>
 
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

<!--    增加配置数据库连接池的依赖-->
 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>1.1.10</version>
 </dependency>

 <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <scope>runtime</scope>
<!-- 加入对应mysql版本的mysql-connector-java版本-->
     <version>5.1.6</version>
 </dependency>
 

1.为什么加入数据库驱动版本号?

 因为Spring默认数据库驱动版本号是MySql 8.x的版本,而这里使用的是MySql 5.x的版本,如果默认和数据库版本号不对应会导致数据库无法连接。

2.MySQL JDBC驱动版本与MySQL数据库版本对应关系:

 Connector/J8.0.12支持Mysql8.0.12这些版本。
 Connector/J 5.1 支持Mysql 4.1、Mysql 5.0、Mysql 5.1、Mysql 6.0 alpha这些版本。
 Connector/J 5.0 支持MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA)。
 Connector/J 3.1 支持MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA) support。
 Connector/J 3.0 支持MySQL 3.x or MySQL 4.1。

 这里我用的是MySQL5.6.47,选用对用的版本即可;
在这里插入图片描述
 具体版本号对应的依赖可查看:Mavnrepository官网

3.alibaba数据库连接池依赖

druid-spring-boot-starter是依赖于spring-boot-starter的依赖,是alibaba专门为SpringBoot量身定做的,在我们使用多数据源的时候会用到它;alibaba也提供了单独的druid依赖,当然多数据源操作时不能选用此依赖。

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>1.1.10</version>
 </dependency>

4.application.properties配置

我们在application.properties里做如下配置

#远程数据库连接
spring.datasource.url=jdbc:mysql://121.40.83.80:3306/testdb1?useUnicode=true&useSSL=false&characterEncoding=utf8
#数据库用户名
spring.datasource.username=root
#数据库密码
spring.datasource.password=123456
#数据源类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

二、创建实体类

在这里插入图片描述

  • User.java

public class User {
    private Long id;
    private String username;
    private String gender;
    //省略getter/setter 和 toString方法
}
  • UserMapper.java

public interface UserMapper {
    List<User> getAllUser();
}
  • MybatisApplication

@SpringBootApplication
@MapperScan(basePackages = "com.alvin.mybatis")
public class MybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class, args);
    }
}

@MapperScan(basePackages = "com.alvin.mybatis")注解:
 该注解的作用主要是用来对mybatis包下面的mapper类中的查询方法进行扫描,如果不使用此注解,也可以在每个mapper类依次加上注解@Mapper注解。

@Mapper
public interface UserMapper {
 List<User> getAllUser();
 }
  • 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.alvin.mybatis.mapper.UserMapper">
    <select id="getAllUser" resultType="com.alvin.mybatis.bean.User">
        select * from user;
    </select>
</mapper>
  • 单元测试类

@SpringBootTest
class MybatisApplicationTests {
    @Autowired
    UserMapper userMapper;
    @Test
    void contextLoads() {
        List<User> allUser = userMapper.getAllUser();
        System.out.println(allUser);
    }
}

三、 UserMapper.xml的位置应该放在哪儿?

1.放在resource下面

 创建包如下:
在这里插入图片描述
 不能直接com.alvin.mybatis.mapper创建,需要一个一个包分别创建
在这里插入图片描述
 然后我们把UserMapper.xml放进去即可,运行单元测试之后查询成功。
在这里插入图片描述
 target文件中usermapper.xml也被扫描进来了
在这里插入图片描述

2.放在main下面的mapper包里

在这里插入图片描述
 这样也是可以的,但是需要对pom.xml进行修改,主动告诉spring我们配置的.xml文件在哪儿;
 修改pom.xml<build>标签中的内容

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

 运行测试类,也是成功的,target文件中usermapper.xml也被扫描进来了
在这里插入图片描述

3.放在resource下新建的mapper包下

在这里插入图片描述
 当然这样也是可以的,但是也需要我们主动告诉spring我们配置的.xml文件在哪儿;
 需要在application.properties添加一句声明:

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

 运行测试类,也是成功的,target文件中usermapper.xml也被扫描进来了
在这里插入图片描述

三种方式,自己在项目中都是用最后一种,配置简单,而且所有的.xml文件放在一起方便观察和管理!

发布了71 篇原创文章 · 获赞 102 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_44717317/article/details/104122458