当前位置:   article > 正文

Spring Boot整合MyBatis_org.mybatis.spring.boot版本

org.mybatis.spring.boot版本

开发环境

  • IDE:idea 2019.2
  • 构建工具:maven 3.8.1
  • MySQL版本:MySQL 5.7
  • MyBatis版本:MyBatis 3.5.7
  • Spring Boot版本:2.5.1

创建maven工程

依赖导入

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>MyBatisSpringBoot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <!--Java版本-->
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--spring boot 核心库-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--测试模块-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>

        <!--spring boot测试模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

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

        <!--连接MySQL-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.3</version>
        </dependency>

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

    </dependencies>

</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

创建一个示例数据库

create database `mybatis`;

use `mybatis`;

create table `user`(
    `id` int(20) not null,
    `name` varchar(30) default null,
    `pwd`  varchar(30) default null,
    primary key (`id`)
)engine = innodb default charset = utf8;

insert into `user`(`id`, `name`, `pwd`)
values ('1', '张三', '123456'),('2', '李四', '123456'),('3', '王五', '123456');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

环境配置

使用application.yaml,整个应用都可以配置在这里

mybatis:
  mapper-locations: classpath:mapper/*.xml   #mapper文件存放地址
  configuration:
    map-underscore-to-camel-case: true   #自动映射

spring:
  datasource:  #数据库路径
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8
    username: root
    password: 123456
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • driver,驱动,这个是固定的,MySQL驱动(mysql-connector-java)低于6.0的使用com.mysql.jdbc.Driver;高于6.0的使用com.mysql.cj.jdbc.Driver,同时需要在url中指明时区
  • url,使用idea连接数据库时,就可以看到一个url,但还需要设置一些内容,“jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8”(附:使用IDER连接MySQL数据库

image-20200804104629507

  • username和password就是自己登录数据库的用户名和密码

根据配置,在resources目录下新建一个名为mapper的文件夹,mybatis的映射文件都放在这个目录下,会被系统自动扫描到。

对象关系映射(ORM)

用于MyBatis映射,MyBatis可以将从数据库取到的数据自动填充到实体对象中。

它们的关系:

Java概念数据库概念
属性字段/列
对象记录/行

映射文件的命名规则

  • 表所对应的实体类的类名+Mapper.xml
  • 例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml
  • 因此一个映射文件对应一个实体类,对应一张表的操作
  • MyBatis映射文件用于编写SQL,访问以及操作表中的数据

对应数据库的user表,添加User实体类

//根据自己需求使用lombok,一些公司要求不得使用lombok,而我认为lombok简化了开发

@Data
public class User {
    private int id;
    private String name;
    private String pwd;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

创建mapper接口

用于获取所有用户信息

public interface UserMapper {
    List<User> getUserList();
}
  • 1
  • 2
  • 3

创建映射文件

UserMapper.xml

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">

    <select id="getUserList" resultType="com.example.pojo.User">
        select * from mybatis.user
    </select>

</mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

配置spring boot主入口

创建spring boot主入口,定义一个Java类,我命名为MainApplication。配置好后,无需再配置tomcat等,启动该方法,就表示启动了整个项目。

@MapperScan("com.example.mapper")
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

dao层的每一个接口变成实现类,要在每个接口类上加上@Mapper注解,比较麻烦,这里用到了MapperScan,顾名思义,就是用作扫描mapper使用,在启动类上添加@MapperScan注解指定扫描的包,该包下的所有接口在编译之后都会生成相应的实现类。

Junit测试

@SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解,像本示例,因为用到了自动注入,所以执行测试代码前需要启动整个项目程序,因此需要使用如下注解启动整个项目。(固定写法,其中@SpringBootTest的参数是项目启动入口对象)

@SpringBootTest(classes = MainApplication.class)
@RunWith(SpringRunner.class)
  • 1
  • 2

测试代码:

@SpringBootTest(classes = MainApplication.class)
@RunWith(SpringRunner.class)
public class Test {

    @Autowired
    private UserMapper userMapper;

    @org.junit.Test
    public void Test(){
        List<User> userList = userMapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

测试正常:

User{id=1, name='张三', pwd='123456'}
User{id=2, name='李四', pwd='123456'}
User{id=3, name='王五', pwd='123456'}
  • 1
  • 2
  • 3

整体结构:

image-20220703222052540

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/498191
推荐阅读
相关标签
  

闽ICP备14008679号