Spring Boot整合MyBatis

开发环境

  • 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>

创建一个示例数据库

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');

环境配置

使用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
  • 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;
}

创建mapper接口

用于获取所有用户信息

public interface UserMapper {
    List<User> getUserList();
}

创建映射文件

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>

配置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);
    }
}

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

Junit测试

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

@SpringBootTest(classes = MainApplication.class)
@RunWith(SpringRunner.class)

测试代码:

@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);
        }
    }
}

测试正常:

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

整体结构:

image-20220703222052540

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

纸照片

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值