Spring Boot 整合 MyBatis

前言

如今業界比較流行的數據操做層框架 MyBatis,下面就講解下 Springboot 如何整合 MyBatis,這裏使用的是xml配置SQL而不是用註解。主要是 SQL 和業務代碼應該隔離,方便和 DBA 校對 SQL。java

個人Git

https://github.com/JasperZXY/TestSpringCloud/tree/master/boot-featuremysql

因爲我不少功能放在同一個項目裏面,因此代碼看起來沒有那麼清晰,不過將就看仍是能夠的。git

個人項目結構

src/
 +- main/
     +- java/
        +- zxy.demo.springboot.mybatis
             +- entity
             +- dao
             +- web
             |- MainApplicion.java
     +- resources/
             +- mapper
             |- application.properties

數據庫準備

數據庫用的是MySQLgithub

CREATE DATABASE test_spring_boot;
CREATE TABLE `user` (
  `id` int(11) NOT NULL COMMENT '主鍵',
  `name` varchar(64) NOT NULL COMMENT '姓名',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `address` varchar(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mybatis-generator

若是沒有mybatis-generator,能夠下載一個。
mybatis-generator的下載地址web

使用mybatis-generator工具生成相關文件,實體對象、dao接口、xml文件。spring

pom.xml

添加必要的依賴sql

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <mybatis-spring-boot.version>1.2.0</mybatis-spring-boot.version>
    <mysql-connector.version>5.1.39</mysql-connector.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis-spring-boot.version}</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector.version}</version>
    </dependency>
</dependencies>

application.properties

打開 application.properties 文件, 修改相應的數據源配置,好比數據源地址、帳號、密碼等,以下數據庫

spring.datasource.url=jdbc:mysql://localhost:3306/test_spring_boot?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.typeAliasesPackage=zxy.demo.springboot.boot_feature.entity
mybatis.mapperLocations=classpath:mapper/*.xml

注意根據本身的實現項目目錄進行相應的修改。瀏覽器

  • mybatis.typeAliasesPackage:爲實體對象所在的包,跟數據庫表一一對應
  • mybatis.mapperLocations:mapper文件的位置

dao

須要配置dao文件,也即操做數據表的接口。springboot

經過@MapperScan註解進行dao文件的掃描,以下

// MyBatis 支持
@MapperScan("zxy.demo.springboot.mybatis.dao")
@SpringBootApplication
public class MainApplicion {

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

}

controller

@RequestMapping("user")
@RestController
public class UserController {
    @Autowired
    private UserMapper userMapper;
    
    @GetMapping("/list/all")
    public Object listAll() {
        return userMapper.selectByExample(new UserExample());
    }

}

運行

右鍵運行 Application 應用啓動類的 main 函數,而後在瀏覽器訪問便可看到數據。

http://localhost:8080/user/list/all
[
    {
        id: 1,
        name: "張三",
        birthday: 1491667200000,
        address: "深圳"
    }
]

與SpringMVC整合MyBatis的區別

SpringMVC是經過xml進行配置,經過配置DataSource、SqlSessionFactoryBean、MapperScannerConfigurer來完成MyBatis的整合。
而SpringBoot是經過application.properties配置數據源、實體bean包名、mapper文件位置和@MapperScan註解來配置掃描的dao路徑,從而實現MyBatis的整合。

相關文章
相關標籤/搜索