栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot整合MyBatis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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工程

依赖导入



    4.0.0

    org.example
    MyBatisSpringBoot
    1.0-SNAPSHOT

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.1
         
    

    
        
        1.8
    

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            junit
            junit
        

        
        
            org.springframework.boot
            spring-boot-starter-test
        

        
            org.projectlombok
            lombok
        

        
        
            mysql
            mysql-connector-java
            5.1.3
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.0
        

    


创建一个示例数据库

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&useUnicode=true&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数据库)

  • 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 getUserList();
}
创建映射文件

UserMapper.xml





    
        select * from mybatis.user
    


配置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 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'}

整体结构:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号