最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Spring Boot集成MyBatis(注解方式)

 更新時(shí)間:2017年05月12日 16:43:53   作者:xuyuzhuang1991  
本篇文章主要介紹了詳解Spring Boot集成MyBatis(注解方式),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

MyBatis是支持定制化SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的持久層框架,避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。spring Boot是能支持快速創(chuàng)建Spring應(yīng)用的Java框架。本文通過(guò)一個(gè)例子來(lái)學(xué)習(xí)Spring Boot如何集成MyBatis,而且過(guò)程中不需要XML配置。

創(chuàng)建數(shù)據(jù)庫(kù)

本文的例子使用MySQL數(shù)據(jù)庫(kù),首先創(chuàng)建一個(gè)用戶表,執(zhí)行sql語(yǔ)句如下:

CREATE TABLE IF NOT EXISTS user (
 `id` INT(10) NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(50) NULL DEFAULT NULL ,
 `age` INT(2) NOT NULL ,
 PRIMARY KEY (id)
)

工程目錄結(jié)構(gòu)與依賴配置

首先新建一個(gè)Maven工程,并配置Pom依賴,本例中所用到的依賴如下:

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.4.2.RELEASE</version>
  <relativePath />
</parent>

<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>1.1.1</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
  </dependency>
</dependencies>

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

然后創(chuàng)建一下工程目錄結(jié)構(gòu),如下圖所示:

project-structure

代碼文件內(nèi)容

0. 創(chuàng)建配置文件——application.properties

寫入一下內(nèi)容:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456

1. 創(chuàng)建POJO——entity/User.java

這是一個(gè)POJO,包含了id, name, age三個(gè)屬性,代碼如下:

package com.xyz.dbtest.entity;
public class User {
  private int id;
  private String name;
  private int age;

  public int getId() {  return id;  }

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

  public String getName() {  return name;  }

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

  public int getAge() {  return age;  }

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

2. 創(chuàng)建一個(gè)數(shù)據(jù)層接口——service/UserService.java

這是一個(gè)Mapper類,代碼如下:

package com.xyz.dbtest.dao;

import com.xyz.dbtest.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import java.util.List;

@Mapper //1
public interface UserDao {
  @Results({ //2
      @Result(property = "id", column = "id"), //2
      @Result(property = "name", column = "name"),
      @Result(property = "age", column = "age")
  })
  @Select("SELECT * FROM user WHERE age = #{age}") //3
  List<User> get(int age);

  @Insert("INSERT INTO user(name, age) VALUES (#{name}, #{age})") //3
  void insert(User user);
}

//1 @Mapper將UserDao聲明為一個(gè)Mapper接口
//2 @Results是結(jié)果映射列表,@Result中property是User類的屬性名,colomn是數(shù)據(jù)庫(kù)表的字段名
//3 @Select, @Insert 分別代表了執(zhí)行的真實(shí)SQL

3. 創(chuàng)建一個(gè)用戶服務(wù)——service/UserService.java

這是一個(gè)服務(wù)類Bean,提供三個(gè)函數(shù)功能,代碼如下:

package com.xyz.dbtest.service;

import com.xyz.dbtest.dao.UserDao;
import com.xyz.dbtest.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service //聲明成一個(gè)spring bean
public class UserService {

  @Autowired //連接到UserDao Bean
  private UserDao userDao;

  public String show() {
    return "Hello World!";
  }

  public List<User> showDao(int age) {
    return userDao.get(age);
  }

  public String insert(String name, int age) { //插入一條記錄
    User user = new User();
    user.setName(name);
    user.setAge(age);
    userDao.insert(user);
    return "Insert ( \""+name+"\", age"+age+") OK!";
  }
}

4. 常見(jiàn)一個(gè)Web Controller——controller/UserController.java

這是一個(gè)Spring Web的Controller類,引入了spring-boot-starter-web依賴,代碼如下:

package com.xyz.dbtest.controller;

import com.xyz.dbtest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController //聲明為一個(gè)Restful的Controller
public class UserController {
  @Autowired //自動(dòng)連接到UserService Bean
  private UserService userService;

  @RequestMapping(value = "/show")
  public String show() {
    return userService.show();
  }

  @RequestMapping(value = "/showDao")
  public Object showDao(int age) {
    return userService.showDao(age);
  }

  @RequestMapping(value="/insert")
  public String insert(String name, int age) {
    return userService.insert(name, age);
  }
}

5. 創(chuàng)建啟動(dòng)類——main/StartApp.java

這是一個(gè)spring boot啟動(dòng)類。代碼如下:

package com.xyz.dbtest.main;

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

@SpringBootApplication(scanBasePackages = "com.xyz.dbtest") //1
@MapperScan(basePackages = "com.xyz.dbtest.dao") //2
public class StartApp {
  public static void main(String[] args) {
    SpringApplication.run(StartApp.class, args);
  }
}

//1 由于StartApp類位于基礎(chǔ)包的自包中,因此需要設(shè)置scanBasePackage
//2 設(shè)置Mapper接口所在的包

運(yùn)行結(jié)果

運(yùn)行Sql語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)表后,運(yùn)行StartApp類。啟動(dòng)成功如下圖所示

run-success

測(cè)試show服務(wù),結(jié)果如下:

show-service

測(cè)試showDao服務(wù),在輸入U(xiǎn)RL時(shí)需要將參數(shù)打包進(jìn)url,結(jié)果如下:
不帶參數(shù)時(shí),訪問(wèn)錯(cuò)誤:

showDao-fail

帶參數(shù)時(shí),訪問(wèn)成功,由于數(shù)據(jù)庫(kù)中沒(méi)有記錄,所以結(jié)果是一個(gè)空列表:

showDao-fail

測(cè)試insert服務(wù)

insert-abc20

insert-xyz20

再次測(cè)試showDao服務(wù)

showDao-agin

結(jié)語(yǔ)

通過(guò)本文的例子可以看出,使用Spring boot集成MyBatis幾乎不用任何配置工作,能有效加快開(kāi)發(fā)效率!

代碼庫(kù)地址:github地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)驗(yàn)證碼具體代碼

    Java實(shí)現(xiàn)驗(yàn)證碼具體代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)驗(yàn)證碼具體代碼,有需要的朋友可以參考一下
    2013-12-12
  • Java多線程之Future設(shè)計(jì)模式

    Java多線程之Future設(shè)計(jì)模式

    這篇文章主要介紹了Java多線程之Future設(shè)計(jì)模式,F(xiàn)uture 代表的是未來(lái)的一個(gè)憑據(jù),文章主要附上Future具體實(shí)現(xiàn)類、橋接Future和FutureTask的代碼,需要的朋友可以參考一下
    2021-10-10
  • Java?數(shù)據(jù)庫(kù)連接池Druid?的介紹

    Java?數(shù)據(jù)庫(kù)連接池Druid?的介紹

    這篇文章主要給大家分享的是?Java?數(shù)據(jù)庫(kù)連接池Druid?的介紹,Druid是一個(gè)JDBC組件,它包括三部分:?DruidDriver?代理Driver,能夠提供基于Filter-Chain模式的插件體系。?DruidDataSource?高效可管理的數(shù)據(jù)庫(kù)連接池,下面來(lái)看看文中的詳細(xì)內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • 應(yīng)用市場(chǎng)中Java攔截器和切面的使用實(shí)例詳解

    應(yīng)用市場(chǎng)中Java攔截器和切面的使用實(shí)例詳解

    這篇文章主要介紹了應(yīng)用市場(chǎng)中Java攔截器和切面的使用實(shí)例詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • springboot使用單元測(cè)試實(shí)戰(zhàn)

    springboot使用單元測(cè)試實(shí)戰(zhàn)

    這篇文章主要介紹了springboot使用單元測(cè)試實(shí)戰(zhàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Spring Boot開(kāi)發(fā)Web應(yīng)用詳解

    Spring Boot開(kāi)發(fā)Web應(yīng)用詳解

    這篇文章主要介紹了Spring Boot開(kāi)發(fā)Web應(yīng)用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Java8函數(shù)式編程應(yīng)用小結(jié)

    Java8函數(shù)式編程應(yīng)用小結(jié)

    Java8非常重要的就是引入了函數(shù)式編程的思想,使得這門經(jīng)典的面向?qū)ο笳Z(yǔ)言有了函數(shù)式的編程方式,彌補(bǔ)了很大程度上的不足,函數(shù)式思想在處理復(fù)雜問(wèn)題上有著更為令人稱贊的特性,本文給大家介紹Java8函數(shù)式編程應(yīng)用小結(jié),感興趣的朋友一起看看吧
    2023-12-12
  • Java多線程之同步工具類CountDownLatch

    Java多線程之同步工具類CountDownLatch

    這篇文章主要介紹了Java多線程之同步工具類CountDownLatch,CountDownLatch是一個(gè)同步工具類,它允許一個(gè)或多個(gè)線程一直等待,直到其他線程執(zhí)行完后再執(zhí)行。例如,應(yīng)用程序的主線程希望在負(fù)責(zé)啟動(dòng)框架服務(wù)的線程已經(jīng)啟動(dòng)所有框架服務(wù)之后執(zhí)行,下面一起來(lái)學(xué)習(xí)學(xué)習(xí)內(nèi)容吧
    2021-10-10
  • Jenkins安裝和插件管理配置入門教程

    Jenkins安裝和插件管理配置入門教程

    這篇文章主要介紹了Jenkins安裝和插件管理知識(shí),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 詳解SpringBoot修改啟動(dòng)端口server.port的四種方式

    詳解SpringBoot修改啟動(dòng)端口server.port的四種方式

    這篇文章主要介紹了詳解SpringBoot修改啟動(dòng)端口server.port的四種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

哈尔滨市| 微博| 东平县| 容城县| 乳山市| 云龙县| 碌曲县| 武定县| 运城市| 美姑县| 册亨县| 安康市| 丹凤县| 贵州省| 涪陵区| 靖远县| 潼关县| 涡阳县| 吉水县| 沂水县| 麻城市| 石渠县| 疏附县| 双城市| 南澳县| 资中县| 迁西县| 阳曲县| 西藏| 临夏市| 科技| 和硕县| 渭南市| 梧州市| 拜泉县| 彰化市| 顺义区| 瑞昌市| 嘉祥县| 盐山县| 鲁山县|