SpringBoot整合MyBatis框架快速入門

MyBatis概述:

mybatis是一個優秀的基於java的持久層框架,它內部封裝了jdbc,使開發者只須要關注sql語句自己,而不須要花費精力去處理加載驅動、建立鏈接、建立statemenet等繁雜的過程。
04mybatis的分析.png
在當今的互聯網應用中項目,mybatis框架一般會由spring框架進行資源整合,做爲數據層技術實現數據交互操做。java

準備工做

1.建立一個Spring Starter Project工程

建立工程.png

1.1添加依賴

建立工程添加依賴.png
建立工程添加依賴2.png

1.2 修改版本

修改版本.png

31.3 建立後的工程項目結構

工程結構.png

2.添加Maven依賴

`<!-- 添加mybatis starter依賴(SpringBoot 工程下提供了mybatis的自動配置) -->mysql

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

3.mysql表

複製下面內容,建立數據庫和數據表:spring

CREATE DATABASE db_user;
use db_user;
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `salary` double DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `emp` VALUES (1, 'Tom', 20, 2000);
INSERT INTO `emp` VALUES (2, 'jack', 19, 3500);
INSERT INTO `emp` VALUES (3, 'lisi', 22, 7000);
INSERT INTO `emp` VALUES (4, 'ailce', 18, 1000);

4.建立配置文件

4.1 配置鏈接信息

在application.properties中添加配置信息:sql

# close banner
spring.main.banner-mode=off
# Spring DateSource
spring.datasource.url=jdbc:mysql:///db_user?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

# Spring mybatis
mybatis.mapper-locations=classpath:/mapper/*/*.xml

該文件用於存放映射語句
在src/main/resources目錄下建立mapper/goods目錄,而後在其目錄中添加GoodsMapper.xml映射文件(文件名可本身指定),並添加以下內容:數據庫

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper>
    
</mapper>

5.建立所需的包和項目

項目結構.png

編寫程序

1.User工具類

User工具類用於封裝用戶信息apache

package com.cy.pj.goods.utils;
/**
 * 用戶工具類
 * @author BigData
 *
 */
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Double salary;
    public Integer getId() {
        return id;
    }
    public void setId(Integer 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;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + "]";
    }
}

2.編寫GoodsMapper.xml配置文件實現查詢功能

將下面內容複製到<mapper></mapper>之間:segmentfault

<mapper namespace="com.cy.pj.goods.dao.GoodsDao">
    <select id="findAll" resultType="com.cy.pj.goods.utils.User">
            select * from emp
    </select>
</mapper>

3.編寫GoodsDao接口

package com.cy.pj.goods.dao;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.cy.pj.goods.utils.User;
/**
 * @Mapper 用於描述(作標記)數據層訪問接口,用於告訴mybatis框架
 *    使用此註解描述的接口要由底層爲建立實現類,在實現類中基於mybatis
 *    API實現與數據庫的交互,這個類的對象最後會交給Spring管理。
 */
@Mapper
public interface GoodsDao {
    /**
     * 查詢全部用戶信息
     * @return List集合
     */
    List<User> findAll();
}

4.編寫測試類

package com.cy.pj.goods.dao;

import java.util.List;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.cy.pj.goods.utils.User;

/**
 * 用於測試程序
 * @author BigData
 *
 */
@SpringBootTest
public class GoodsDaoTests {
    
    @Autowired
    private GoodsDao goodsDao;
    /**
     * 查詢用戶信息
     */
    @Test
    public void testFindAll() {
        //調用dao層的查詢方法
        List<User> findAll = goodsDao.findAll();
        //遍歷集合
        for (User user : findAll) {
            System.out.println(user);
        }
    }
}

通過上面的步驟,如今就實現了SpringBoot和MyBatis的整合!!!
假如程序有報錯,請參考下面文章!!!
SpringBoot項目實踐過程當中遇到過哪些問題?api

相關文章
相關標籤/搜索