Springboot下使用Mybatis

最近有項目需要使用java語言開發(fā)數(shù)據(jù)接口慈缔,整體框架需要符合微服務架構(gòu)嘀趟,在網(wǎng)上查找了相關資料,最終選定了Springcloud+Springboot的架構(gòu),此文主要記錄Mybatis在Springboot下的使用逞带,一方面作為學習日記,另一方面也希望對正在學習springboot的朋友們有一定幫助惨远。
全文包含3部分內(nèi)容:

  • 項目搭建
  • 數(shù)據(jù)庫配置
  • 數(shù)據(jù)操作層編寫

項目創(chuàng)建

本文中使用的編輯器為Intellij Idea躯枢,創(chuàng)建流程也是基于Intellij,具體步驟如下:

  1. 在New Project面板中中選擇Spring Initializr司忱,點擊Next按鈕皇忿,如下圖:


    image.png
  2. 填寫項目的相關信息,Type一行根據(jù)使用習慣選擇Maven或者Gradle就好坦仍。
  3. 選擇項目的相關依賴鳍烁,該文章中Web選項里選擇了Web,Sql選項里面勾選Mybatis及Mysql后按著向?qū)瓿身椖縿?chuàng)建繁扎,如下圖:


    image.png
  4. 最終生成的項目目錄結(jié)構(gòu)如下圖:


    image.png
  5. 如下為項目的依賴配置文件代碼:
<?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.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.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.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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


</project>

數(shù)據(jù)庫配置

在Springboot中幔荒,數(shù)據(jù)庫的配置非常簡單,在resources文件夾下的application.propertites編寫相關配置即可梳玫,喜歡yml格式的也可以換成application.yml爹梁,具體如下:

mybatis.type-aliases-package=com.aryan.entity

spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = demopc

需注意第一行配置,com.aryan.entity指定了后面的mybatis數(shù)據(jù)庫實體從哪個包進行查找提澎。

數(shù)據(jù)庫操作層編寫

實體層編寫

  1. 在main的src目錄下新建package姚垃,命名為entity,作為mybatis的數(shù)據(jù)庫實體層盼忌,與前面數(shù)據(jù)庫配置相對應积糯。
  2. 創(chuàng)建Product實體,代碼如下:
package com.aryan.entity;

import java.io.Serializable;

/**
 * Created by Aryan on 2017/6/25.
 */
public class ProductEntity implements Serializable {
    private Long id;
    private String name;
    private String code;

    public ProductEntity() {
        super();
    }
    public ProductEntity(Long id, String name, String code) {
        super();
        this.id = id;
        this.name = name;
        this.code = code;
    }

    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 String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    @Override
    public String toString() {
        return "ProductEntity{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", code='" + code + '\'' +
                '}';
    }
}

Dao層編寫

  1. 在main目錄的src文件夾下新建package碴犬,命名為mapper絮宁,該package作為項目的dao層映射,將sql語句與調(diào)用的方法關聯(lián)起來服协,整體使用起來比較靈活绍昂。
  2. 在mapper包下新建ProductMapper接口,編寫相關數(shù)據(jù)庫操作方法,具體代碼如下:
package com.aryan.mapper;

import com.aryan.entity.ProductEntity;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Created by Aryan on 2017/6/25.
 */
public interface ProductMapper {
    @Select("SELECT * FROM products")
    List<ProductEntity> getAll();

    @Select("SELECT * FROM Products WHERE id = #{id}")
    ProductEntity getOne(Long id);

    @Insert("INSERT INTO products(name,code) VALUES(#{name}, #{code})")
    void insert(ProductEntity product);
}


控制器編寫

  1. 在main目錄src文件夾下新建package窘游,命名為controller唠椭,該package作為MVC中的控制器,主要編寫了產(chǎn)品添加及查詢的路由忍饰,具體代碼如下:
package com.aryan.controller;

import com.aryan.entity.ProductEntity;
import com.aryan.mapper.ProductMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * Created by Aryan on 2017/6/25.
 */
@RestController
public class ProductController {
    @Autowired
    private ProductMapper productMapper;

    @RequestMapping(value = "/products")
    public List<ProductEntity> getAll() {
        return productMapper.getAll();
    }

    @RequestMapping(value = "/product/{id}")
    public ProductEntity getOne(@PathVariable Long id) {
        return productMapper.getOne(id);
    }

    @RequestMapping(value = "/product/add", method = RequestMethod.POST)
    public void insert(@RequestBody ProductEntity product) {
        productMapper.insert(product);
    }
}

運行項目

  1. 運行項目前首先需要在Application入口文件中加上dao層配置贪嫂,添加@MapperScan("com.aryan.mapper")注解,代碼如下:
package com.aryan;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.aryan.mapper")
public class SpringBootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMybatisApplication.class, args);
    }
}
  1. 直接運行該項目艾蓝, 運行成功后力崇,在進行api訪問時別忘記先把數(shù)據(jù)庫表生成好, 然后訪問http://localhost:8080/products 查看數(shù)據(jù)庫數(shù)據(jù)赢织,通過Postman或者Fiddler采用Post訪問http://localhost:8080/product/add 并傳遞產(chǎn)品數(shù)據(jù)亮靴,成功后可以查看表數(shù)據(jù)確認接口是否運行正常。
    最后于置,整個項目完成后目錄結(jié)構(gòu)如下:
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茧吊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子八毯,更是在濱河造成了極大的恐慌搓侄,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件话速,死亡現(xiàn)場離奇詭異讶踪,居然都是意外死亡,警方通過查閱死者的電腦和手機尿孔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門俊柔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人活合,你說我怎么就攤上這事雏婶。” “怎么了白指?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵留晚,是天一觀的道長。 經(jīng)常有香客問我告嘲,道長错维,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任橄唬,我火速辦了婚禮赋焕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仰楚。我一直安慰自己隆判,他們只是感情好犬庇,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侨嘀,像睡著了一般臭挽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咬腕,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天欢峰,我揣著相機與錄音,去河邊找鬼涨共。 笑死纽帖,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的举反。 我是一名探鬼主播抛计,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼照筑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瘦陈,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤凝危,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后晨逝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛾默,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年捉貌,在試婚紗的時候發(fā)現(xiàn)自己被綠了支鸡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡趁窃,死狀恐怖牧挣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情醒陆,我是刑警寧澤瀑构,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站刨摩,受9級特大地震影響寺晌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜澡刹,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一呻征、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罢浇,春花似錦陆赋、人聲如沸沐祷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戈轿。三九已至,卻和暖如春阵子,著一層夾襖步出監(jiān)牢的瞬間思杯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工挠进, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留色乾,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓领突,卻偏偏與公主長得像暖璧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子君旦,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • springboot下使用mybatis 使用mybatis-spring-boot-starter即可澎办。 簡單來...
    金琥閱讀 5,099評論 1 2
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL金砍、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,464評論 0 4
  • 那天看了一位簡書分享技巧的大學老師貌似局蚀,揣摩了幾個小時她的內(nèi)容,后來幡然醒悟恕稠,特別激動琅绅,可是找不到她那個帖子在哪里...
    夏墨跡q閱讀 244評論 1 1
  • 書中精華總結(jié) 卡波妮告訴孩子們不要自視清高,要懂得尊重別人鹅巍,這是一種禮貌千扶,更是一種教養(yǎng)。 阿蒂克斯告訴孩子們骆捧,一個...
    雪韻梅香閱讀 290評論 1 0
  • 致四班的你們以及曾經(jīng)的自己: 這些年澎羞,一個人行走,一個人回憶凑懂。 或許走了很久煤痕、很久,最后卻還是忍不住接谨,回憶當年的樣...
    柏木之舟閱讀 233評論 0 3