Spring?Boot?利用注解方式整合?MyBatis
前言
目前而言,國(guó)內(nèi)大家使用最多的持久層框架可能還是 MyBatis 吧,那既然如此,更強(qiáng)大的 Spring Boot 遇上熾手可熱的 MyBatis,又會(huì)擦出什么樣的火花呢?
那本文就來(lái)看看,如何利用 SpringBoot 來(lái)整合 Mybatis。
如下圖是總結(jié)的整合過(guò)程的大概流程,那接下來(lái)我們就來(lái)開(kāi)始具體的整合操作!

整合過(guò)程
最終項(xiàng)目結(jié)構(gòu)如下圖所示:

新建 Spring Boot 項(xiàng)目
新建一個(gè) Spring Boot 項(xiàng)目,添加 Web 組件,具體過(guò)程可以參照我的另一篇博客Spring Boot 教程之創(chuàng)建項(xiàng)目的三種方式
添加 pom 依賴(lài)
由于要整合 MyBatis,所以我們需要在項(xiàng)目的配置文件 pom.xml 中添加 mysql 驅(qū)動(dòng)和 SpringBoot MyBatis 整合包;
<!-- springboot mybatis 整合包 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- mysql 驅(qū)動(dòng) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>準(zhǔn)備數(shù)據(jù)庫(kù)
- 數(shù)據(jù)庫(kù)創(chuàng)建及輸入插入
準(zhǔn)備一張 user 表,有 id、name、age 三個(gè)屬性,其中 id 為主鍵且自增,然后插入三條數(shù)據(jù);
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `name` varchar(50) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年齡', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; INSERT INTO user values (1,"村雨遙",25); INSERT INTO user values (2,"張三",26); INSERT INTO user values (3,"李四",27);
- 數(shù)據(jù)源配置
在項(xiàng)目配置文件 application.properties 中配置數(shù)據(jù)源;
# 數(shù)據(jù)庫(kù)配置 spring.datasource.username=root spring.datasource.password=0908 spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
pojo 層
根據(jù)數(shù)據(jù)庫(kù)創(chuàng)建實(shí)體類(lèi),為了精簡(jiǎn)代碼,后面過(guò)程中都或多或少用了 Lombok 插件,所以需要事先在 pom.xml 引入;
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>package com.cunyu.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author : cunyu
* @version : 1.0
* @className : User
* @date : 2020/7/26 20:44
* @description : User 實(shí)體類(lèi)
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
}dao 層
實(shí)體類(lèi)創(chuàng)建完成后,編寫(xiě)實(shí)體類(lèi)對(duì)應(yīng)接口;
package com.cunyu.dao;
import com.cunyu.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
/**
* @InterfaceName : UserDao
* @Author : cunyu
* @Date : 2020/7/26 20:47
* @Version : 1.0
* @Description : User 類(lèi)對(duì)應(yīng)接口
**/
@Mapper
public interface UserDao {
/**
* @param id 用戶(hù) id
* @return 對(duì)應(yīng) id 的用戶(hù)
* @description 根據(jù)用戶(hù) id 查詢(xún)用戶(hù)
* @date 2020/7/26 20:48
* @author cunyu1943
* @version 1.0
*/
@Select("SELECT id,name,age FROM user where id = #{id}")
User getUserById(Long id);
}service 層
- service 接口
package com.cunyu.service;
import com.cunyu.pojo.User;
/**
* @author : cunyu
* @version : 1.0
* @className : UserService
* @date : 2020/7/26 20:57
* @description : User service 接口
*/
public interface UserService {
/**
* @param id 用戶(hù) iD
* @return 對(duì)應(yīng) id 的用戶(hù)
* @description 根據(jù) id 查找用戶(hù)
* @date 2020/7/26 20:58
* @author cunyu1943
* @version 1.0
*/
User getUserById(Long id);
}- service 接口實(shí)現(xiàn)類(lèi)
package com.cunyu.service.impl;
import com.cunyu.dao.UserDao;
import com.cunyu.pojo.User;
import com.cunyu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @description : service 接口實(shí)現(xiàn)類(lèi)
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User getUserById(Long id) {
return userDao.getUserById(id);
}
}controller 層
package com.cunyu.controller;
import com.cunyu.pojo.User;
import com.cunyu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
/**
* 自動(dòng)注入
*/
@Autowired
private UserService userService;
@GetMapping("/user")
public User getUserById() {
User user = userService.getUserById(1L);
return user;
}
}入口程序配置
在入口程序中配置 mapper 自動(dòng)掃描;
package com.cunyu;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages = "com.cunyu.dao")
@SpringBootApplication
public class MybatisXmlApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisXmlApplication.class, args);
}
}網(wǎng)頁(yè)測(cè)試
完成上述所有步驟之后,在瀏覽器中訪(fǎng)問(wèn) http://localhost:8080/user,就可以在網(wǎng)頁(yè)中顯示對(duì)應(yīng) id 的 User 對(duì)象的所有信息;

總結(jié)
完成 Spring Boot 整合 MyBatis 的具體過(guò)程了,可能發(fā)現(xiàn)了,我們?cè)?DAO 層未使用任何 XML 文件,取而代之的是各種不同的注解。那我們下一篇文章就來(lái)看看,Spring Boot 利用 XML 方式整合 MyBatis
到此這篇關(guān)于Spring Boot 利用注解方式整合 MyBatis的文章就介紹到這了,更多相關(guān)Spring Boot 整合 MyBatis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Boot 整合 Mybatis Annotation 注解的完整 Web 案例
- 詳解SpringBoot 快速整合Mybatis(去XML化+注解進(jìn)階)
- Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法)
- SpringBoot整合Mybatis注解開(kāi)發(fā)的實(shí)現(xiàn)代碼
- springboot整合mybatis-plus基于注解實(shí)現(xiàn)一對(duì)一(一對(duì)多)查詢(xún)功能
- springboot整合mybatis的超詳細(xì)過(guò)程(配置模式+注解模式)
相關(guān)文章
Java設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式
這篇文章介紹了Java設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
Java BeanUtils.copyProperties的詳解
這篇文章主要介紹了Java BeanUtils.copyProperties的詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Maven項(xiàng)目部署到Jboss出現(xiàn)Failed to create a new SAX parser
這篇文章主要為大家詳細(xì)介紹了Maven項(xiàng)目部署到Jboss出現(xiàn)Failed to create a new SAX parser的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
SpringMVC框架如何與Junit整合看這個(gè)就夠了
這篇文章主要介紹了SpringMVC框架如何與Junit整合看這個(gè)就夠了,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
深入理解Java中沒(méi)那么簡(jiǎn)單的單例模式
這篇文章主要給大家詳細(xì)介紹了Java單例模式,關(guān)于Java中的單例模式并非看起來(lái)那么簡(jiǎn)單的,為什么要這么說(shuō)呢?下面通過(guò)這篇文章來(lái)一起看看吧,有需要的朋友們可以參考借鑒。2017-01-01
Java開(kāi)發(fā)環(huán)境jdk 1.8安裝配置方法(Win7 64位系統(tǒng)/windows server 2008)
這篇文章主要介紹了Java開(kāi)發(fā)環(huán)境配置方法(Win7 64位系統(tǒng)/windows server 2008),需要的朋友可以參考下2016-10-10
Spring中的注解@Value("#{}")與@Value("${}")的區(qū)別
這篇文章主要介紹了Spring中的注解@Value(“#{}“)與@Value(“${}“)的區(qū)別到底是什么,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06

