欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

創(chuàng)建數據庫

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

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)
)

工程目錄結構與依賴配置

首先新建一個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)建一下工程目錄結構,如下圖所示:

project-structure

代碼文件內容

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

寫入一下內容:

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

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

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)建一個數據層接口——service/UserService.java

這是一個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聲明為一個Mapper接口
//2 @Results是結果映射列表,@Result中property是User類的屬性名,colomn是數據庫表的字段名
//3 @Select, @Insert 分別代表了執(zhí)行的真實SQL

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

這是一個服務類Bean,提供三個函數功能,代碼如下:

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 //聲明成一個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. 常見一個Web Controller——controller/UserController.java

這是一個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 //聲明為一個Restful的Controller
public class UserController {
  @Autowired //自動連接到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)建啟動類——main/StartApp.java

這是一個spring boot啟動類。代碼如下:

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類位于基礎包的自包中,因此需要設置scanBasePackage
//2 設置Mapper接口所在的包

運行結果

運行Sql語句創(chuàng)建數據庫表后,運行StartApp類。啟動成功如下圖所示

run-success

測試show服務,結果如下:

show-service

測試showDao服務,在輸入URL時需要將參數打包進url,結果如下:
不帶參數時,訪問錯誤:

showDao-fail

帶參數時,訪問成功,由于數據庫中沒有記錄,所以結果是一個空列表:

showDao-fail

測試insert服務

insert-abc20

insert-xyz20

再次測試showDao服務

showDao-agin

結語

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

代碼庫地址:github地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java并發(fā)(Runnable+Thread)實現(xiàn)硬盤文件搜索功能

    Java并發(fā)(Runnable+Thread)實現(xiàn)硬盤文件搜索功能

    這篇文章主要介紹了Java并發(fā)(Runnable+Thread)實現(xiàn)硬盤文件搜索,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • elasticsearch集群查詢超10000的解決方案

    elasticsearch集群查詢超10000的解決方案

    ES為了避免用戶的過大分頁請求造成ES服務所在機器內存溢出,默認對深度分頁的條數進行了限制,默認的最大條數是10000條,這篇文章主要給大家介紹了關于elasticsearch集群查詢超10000的解決方案,需要的朋友可以參考下
    2024-08-08
  • 詳解Java中類的加載順序

    詳解Java中類的加載順序

    Java中什么時候類加載,第一次需要使用類信息時加載。類加載的原則:延遲加載,能不加載就不加載。下面這篇文章主要介紹了Java中類的加載順序,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • hibernate-validator改進校驗框架validator?v0.4使用

    hibernate-validator改進校驗框架validator?v0.4使用

    這篇文章主要為大家介紹了改進?hibernate-validator,新一代校驗框架?validator?使用介紹?v0.4,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-03-03
  • Java中打jar包以及如何調用包方法演示

    Java中打jar包以及如何調用包方法演示

    這篇文章主要給大家介紹了關于Java中打jar包以及如何調用包的相關資料,jar包的全稱是java archive,jar包本質就是一種壓縮包,在Java開發(fā)中一般是用來壓縮類的一個包,需要的朋友可以參考下
    2023-09-09
  • java中字符串如何計算字節(jié)長度

    java中字符串如何計算字節(jié)長度

    這篇文章主要介紹了java中字符串如何計算字節(jié)長度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java使用hutool實現(xiàn)文件大小的友好輸出

    Java使用hutool實現(xiàn)文件大小的友好輸出

    這篇文章主要為大家詳細介紹了Java如何使用hutool實現(xiàn)文件大小的友好輸出,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下
    2023-11-11
  • Java中實現(xiàn)多重排序的幾種方法小結

    Java中實現(xiàn)多重排序的幾種方法小結

    Java中的多重排序通常指的是同時對一個集合中的兩個或更多列或多維度的數據進行排序,這通常通過自定義Comparator實現(xiàn),可以結合Arrays.sort()或Collections.sort()方法,當需要進行多重排序時,即根據多個字段進行排序,我們可以采用以下幾種方法
    2024-10-10
  • springboot啟動時候報錯mongodb問題

    springboot啟動時候報錯mongodb問題

    這篇文章主要介紹了springboot啟動時候報錯mongodb問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • mybatis插件優(yōu)雅實現(xiàn)字段加密的示例代碼

    mybatis插件優(yōu)雅實現(xiàn)字段加密的示例代碼

    在很多時候,我們都需要字段加密,比如郵箱,密碼,電話號碼等,本文主要介紹了mybatis插件優(yōu)雅實現(xiàn)字段加密的示例代碼,感興趣的可以了解一下
    2023-11-11

最新評論