低调人的gravatar头像
低调人 2017-12-28 15:56:20
Spring Boot之Spring Boot整合MyBatis

前言

现在业界比较流行的数据操作层框架 MyBatis,下面就讲解下 Springboot 如何整合 MyBatis,这里使用的是注解配置SQL.

Spring中整合MyBatis就不多说了,最近大量使用Spring Boot,因此整理一下Spring Boot中整合MyBatis的步骤。搜了一下Spring Boot整合MyBatis的文章,方法都比较老,比较繁琐。查了一下文档,实际已经支持较为简单的整合与使用。下面就来详细介绍如何在Spring Boot中整合MyBatis,并通过注解方式实现映射。

整合MyBatis

新建Spring Boot项目

pom.xml中引入依赖

  • 这里用到spring-boot-starter基础和spring-boot-starter-test用来做单元测试验证数据访问
  • 引入连接mysql的必要依赖mysql-connector-java
  • 引入整合MyBatis的核心依赖mybatis-spring-boot-starter
  • 这里不引入spring-boot-starter-jdbc依赖,是由于mybatis-spring-boot-starter中已经包含了此依赖
<?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>com.xiaojingg</groupId>
   <artifactId>springbootstudy-demo9-mybatis</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>springbootstudy-demo9-mybatis</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.9.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>

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

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.mybatis.spring.boot</groupId>
         <artifactId>mybatis-spring-boot-starter</artifactId>
         <version>1.1.1</version>
      </dependency>

      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.21</version>
      </dependency>

   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

同之前介绍的使用jdbc和spring-data连接数据库一样,在application.properties中配置mysql的连接配置

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

同其他Spring Boot工程一样,简单且简洁的的完成了基本配置,下面看看如何在这个基础下轻松方便的使用MyBatis访问数据库。

使用MyBatis

  • 在Mysql中创建User表,包含id(BIGINT)、name(INT)、age(VARCHAR)字段。同时,创建映射对象User
package com.xiaojingg.domain;

public class User {

    private Long id;
    private String name;
    private Integer age;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

}
  • 创建User映射的操作UserMapper,为了后续单元测试验证,实现插入和查询操作
package com.xiaojingg.domain;

import org.apache.ibatis.annotations.*;

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM USER WHERE NAME = #{name}")
    User findByName(@Param("name") String name);

    @Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
    int insert(@Param("name") String name, @Param("age") Integer age);

}
主类如下:
package com.xiaojingg;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootstudyDemo9MybatisApplication {

   public static void main(String[] args) {
      SpringApplication.run(SpringbootstudyDemo9MybatisApplication.class, args);
   }
}
创建单元测试
测试逻辑:插入一条name=AAA,age=20的记录,然后根据name=AAA查询,打印数据
测试结束回滚数据,保证测试单元每次运行的数据环境独立,这里可以屏蔽这里注解!
package com.xiaojingg;

import com.xiaojingg.domain.User;
import com.xiaojingg.domain.UserMapper;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringRunner.class)
@SpringBootTest
//@Transactional
public class SpringbootstudyDemo9MybatisApplicationTests {
   @Autowired
   private UserMapper userMapper;
   @Test
   @Rollback
   public void findByName() throws Exception {
      userMapper.insert("AAA", 20);
      User u = userMapper.findByName("AAA");
      System.out.print("========================="+u.getAge().intValue());
   }
}

运行截图如下:

Spring Boot之Spring Boot整合MyBatis

查看数据库数据:

Spring Boot之Spring Boot整合MyBatis

这里就结束了,配置mybatis咯!

这里只是简单额 mybatis配置;有需要的可以下载我的项目看完整的项目配置


打赏

已有1人打赏

已注销用户的gravatar头像
最近浏览
芝麻小汤圆  LV1 2021年12月13日
夜孑殀 2021年6月4日
暂无贡献等级
wangyan111111  LV8 2021年5月13日
qq630185513  LV2 2021年2月20日
Luis虎子  LV16 2021年1月5日
sangyy  LV10 2020年5月23日
binshuan  LV3 2020年5月14日
fuxiyuan  LV6 2020年5月12日
已注销用户  LV34 2020年4月1日
李逸荨  LV10 2020年4月1日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友