1. 程式人生 > >Spring Boot整合Mybatis並完成CRUD操作

Spring Boot整合Mybatis並完成CRUD操作

MyBatis 是一款優秀的持久層框架,被各大網際網路公司使用,本文使用Spring Boot整合Mybatis,並完成CRUD操作。

為什麼要使用Mybatis?我們需要掌握Mybatis嗎?

說的官方一點:

MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java物件)對映成資料庫中的記錄。

說的功利一點:

據說目前各大網際網路公司通常使用Mybatis,還不趕快學習一下嗎?

怎麼使用?

這才是本文的重點。

新建Spring Boot工程和匯入Eclipse這些在這裡就不囉嗦了,不會的可以檢視只需兩步!Eclipse+Maven快速構建第一個Spring Boot專案

1. pom.xml新增依賴

Spring Boot整合Mybatis需要引入 mybatis-spring-boot-starter;我使用的是MySQL資料庫,需要引入ysql-connector-java。

        <!-- mysql驅動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
           
        <!-- spring-boot整合mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

2. application.property配置Mybatis和資料來源

mybatis.config-location=classpath:mapper/mybatis_config.xml
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=com.shangguan.mybatis.entity

spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url =  jdbc:mysql://localhost:3306/spring_boot?serverTimezone=GMT%2B8
spring.datasource.username = root
spring.datasource.password = 123456

例如我的mybatis_config.xml的路徑為/mybatis/src/main/resources/mapper/mybatis_config.xml(下面是目錄結構圖),那麼我的mybatis.config-location配置為classpath:mapper/mybatis_config.xml,請注意一定要根據自己專案的目錄結構進行配置Mybatis。資料庫也一樣。

mapper包裡面是Mybatis的對映類。

interceptor包是攔截器,如果還有疑問請參考之前的博文:Spring Boot配置攔截器及實現跨域訪問

3. Mybatis全域性配置檔案

MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定(settings)和屬性(properties)資訊。關於配置檔案的詳解請看 xml對映配置檔案

mybatis_config.xml

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

</configuration>

4. 實體類User

User使用的和之前使用的一樣,沒有修改。

User:

public class User implements Serializable {

    private static final long serialVersionUID = 1L;
    private Long id;
    private String userName;
    private String passWord;

    public User() {
        super();
    }

    public User(String userName, String passWord) {
        super();
        this.userName = userName;
        this.passWord = passWord;
    }

    public Long getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    @Override
    public String toString() {
        return "userName " + this.userName + ", pasword " +  this.passWord;
    }
}

5. 新增User的對映檔案和對映類

SQL 對映檔案有很少的幾個頂級元素(按照它們應該被定義的順序):
  • cache – 給定名稱空間的快取配置。
  • cache-ref – 其他名稱空間快取配置的引用。
  • resultMap – 是最複雜也是最強大的元素,用來描述如何從資料庫結果集中來載入物件。
  • parameterMap – 已廢棄!老式風格的引數對映。內聯引數是首選,這個元素可能在將來被移除,這裡不會記錄。
  • sql – 可被其他語句引用的可重用語句塊。
  • insert – 對映插入語句
  • update – 對映更新語句
  • delete – 對映刪除語句
  • select – 對映查詢語句
更多資訊請參考 xml對映檔案 。

增刪改查的SQL語句在UserMapper.xml裡面書寫,具體的看程式碼,裡面有註釋。

有幾點需要注意的地方:

①<select id="getAll" resultType="user">,這裡的id的名字是自己取的,但是要和UserMapper.java裡面的名字相同public List<User> getAll();

②當SQL語句中有多個引數的時候,需要在對映類方法裡面加@Param的註解,不然會丟擲異常說找不到引數。例如:

public void updateUser(@Param("id") Long id, @Param("userName")  String userName,
            @Param("passWord") String passWord);

③主鍵自增,需要設定useGeneratedKeys="true" keyProperty="id"

UserMapper.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 namespace="com.shangguan.mybatis.mapper.UserMapper">
      <resultMap id="BaseResultMap"  type="com.shangguan.mybatis.mapper.UserMapper" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="userName" property="userName"  jdbcType="VARCHAR" />
        <result column="passWord" property="passWord"  jdbcType="VARCHAR" />
    </resultMap>
    
    <!--查詢所有-->
    <select id="getAll" resultType="user">
        select * from user
    </select>
    
    <!--儲存使用者-->
   <insert id="saveUser"  useGeneratedKeys="true" keyProperty="id">
        insert into user(username,password)  values(#{userName},#{passWord})
    </insert>
    
    <!--通過Id刪除使用者-->
    <delete id="deleteUserById">
       delete from user where id =#{id}
    </delete>
    
    <!--更新該使用者資訊-->
    <update id="updateUser">
       update user set userName = #{userName},passWord =  #{passWord}
       where id = #{id}
    </update>
    
</mapper>

對映類UserMapper.java:

@Mapper
public interface UserMapper {
    public List<User> getAll();
    public void saveUser(User user);
    public void deleteUserById(Long id);
    public void updateUser(@Param("id") Long id,  @Param("userName") String userName,
            @Param("passWord") String passWord);
}

6. Service層實現

UserService裡面有四個方法:增刪改查。查詢所有的使用者,儲存使用者,通過id刪除使用者,更新使用者資訊。

UserService:

public interface UserService {

    public List<User> getAllUser();
    public void saveUser(User user);
    public void deleteUserById(Long id);
    public void updateUser(Long id, String userName, String  passWord);

}

UserServiceImpl:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> getAllUser() {
        List<User> list = userMapper.getAll();
        return list;
    }

    @Override
    public void saveUser(User user) {
        userMapper.saveUser(user);
    }

    @Override
    public void deleteUserById(Long id) {
        userMapper.deleteUserById(id);
    }

    @Override
    public void updateUser(Long id, String userName, String  passWord) {
        userMapper.updateUser(id, userName, passWord);
    }
}

7. Controller層實現

UserController裡面對介面進行封裝:

@RestController
@SpringBootApplication
@RequestMapping("/mybatis")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/getAllUser")
    public List<User> getAllUser() {
        List<User> list = userService.getAllUser();
        return list;
    }

    @RequestMapping("/saveUser")
    public void saveUser(User user) {
        userService.saveUser(user);
    }

    @RequestMapping("/deleteUserById")
    public void deleteUserById(Long id) {
        userService.deleteUserById(id);
    }

    @RequestMapping("/updateUser")
    public void updateUser(Long id, String userName, String  passWord) {
        userService.updateUser(id, userName, passWord);
    }
}

8. 測試

啟動Spring Boot專案,使用Postman進行測試:

① http://localhost:8080/mybatis/getAllUser 獲取所有的使用者資訊 

相關推薦

Spring Boot整合Mybatis完成CRUD操作

MyBatis 是一款優秀的持久層框架,被各大網際網路公司使用,本文使用Spring Boot整合Mybatis,並完成CRUD操作。 為什麼要使用Mybatis?我們需要掌握Mybatis嗎? 說的官方一點: MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBa

Spring Boot整合Mybatis完成級聯一對多CRUD操作

在關係型資料庫中,隨處可見表之間的連線,對級聯的表進行增刪改查也是程式設計師必備的基礎技能。關於Spring Boot整合Mybatis在之前已經詳細寫過,不熟悉的可以回顧Spring Boot整合Mybatis並完成CRUD操作,這是本文操作的基礎。本文先準備一個測試的資料庫,然後使用MyBatis Gen

spring boot整合mybatis深坑之c3p0的詳細配置

text context ati reat source ast type fig oot 項目地址:https://gitee.com/zhangjunqing/spring-boot/tree/master/springboot-mybatis-notice 本人在c3

spring boot 整合mybatis

參考 plugins odin system stack name incr xmlns xsd 參考: http://blog.csdn.net/saytime/article/details/74783296 spring boot可以使用全註解的方式進行開發,極大的提

spring boot整合mybatis+mybatis-plus

可靠 nic false system ttr .post 代碼生成 -i filters Spring boot對於我來說是一個剛接觸的新東西,學習過程中,發現這東西還是很容易上手的,Spring boot沒配置時會默認使用Spring data jpa,這東西可以說一個

企業分布式微服務雲SpringCloud SpringBoot mybatis (十三)Spring Boot整合MyBatis

ech 字段 osc 操作 with public assert 連接 ref Spring中整合MyBatis就不多說了,最近大量使用Spring Boot,因此整理一下Spring Boot中整合MyBatis的步驟。搜了一下Spring Boot整合MyBatis的文

Spring Boot整合MyBatis學習總結

Spring Boot MyBatis druid數據源 druid sql監控 公司的很多項目都陸陸續續引入了Spring Boot,通過對Spring Boot的接觸了解發現其真的是大大地簡化了開發、簡化了依賴配置,很多功能註解一下就可以實現,真的是太方便了。下面記錄了一個Sp

spring boot整合mybatis

tis ott 最簡 boot.s driver 大連 ins pla configure spring boot本來可以使用jpa進行數據庫操作,但是考慮到jpa的資料比較少,學習成本比較大,不是所有的人都可以十分了解,因此考慮采用mybatis來進行數據庫操作。 1、新

SpringBoot自學教程 | 第四篇:Spring Boot整合mybatis

整合 com 字段 apach param pack image ice rac   引入依賴   1:在pom文件引入mybatis-spring-boot-starter的依賴: 1 <dependency> 2 <groupId>

spring boot 整合mybatis:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

pri ssp path 內容 方案 sta 問題 xmapp not 最近在學習SpringBoot,遇到些異常情況: 1、異常信息 org.apache.ibatis.binding.BindingException: Invalid bound statement (

spring boot 整合mybatis(好用!!!!)

com true pla 12px 保密 center 性別 request context springboot整合mybatis 1.pom依賴 <!-- 引入freeMarker的依賴包. --> <dependency>

Spring Boot】(23)、Spring Boot整合Mybatis

首先新增mybatis依賴: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</

Spring Boot整合MyBatis實戰

一 新建pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g

Spring boot 整合MyBatis(1)

一、Spring boot整合MyBatis Mybatis提供了mybatis-spring-boot-starter 目前 1.3.x 是最新版 https://github.com/mybatis/spring-boot-startergit下載地址

Spring Boot整合Redis及RedisTemplate常用操作

Spring Boot整合Redis maven依賴 <!-- redis 依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <

Spring Boot 整合 MyBatis(四)

Spring Boot 整合 MyBatis A、ORM框架是什麼? 物件關係對映(Object Relational Mapping,簡稱 ORM)模式是一種為了解決面向物件與關係資料庫存在的 互不匹配的現象技術。簡單的說,ORM 是通過使用描述物件

Spring-boot整合Mybatis踩坑:不能找到@MapperScan標籤

       開發工具:Ideal        使用場景:Demo 問題描述:        Spring

spring boot整合mybatis基於註解開發以及動態sql的使用

  讓我們回憶一下上篇部落格中mybatis是怎樣發揮它的作用的,主要是三類檔案,第一mapper介面,第二xml檔案,第三全域性配置檔案(application.properties),而今天我們就是來簡化mybatis的工作的——利用註解替代xml配置檔案。   先貼出mapper介面程式碼 @

Spring Boot 整合Mybatis非starter時,mapper一直無法注入解決

本來呢,直接使用mybatis-spring-boot-starter還是挺好的,但是我們系統比較複雜,有多個數據源,其中一個平臺自己的資料來源,另外一些是動態配置出來的,兩者完全沒有關係。所以直接使用mybatis-spring-boot-starter就很麻煩了,會報下列錯誤: Caused by

spring-boot整合mybatis-generator

通用Mapper在1.0.0版本的時候增加了MyBatis Generator(以下簡稱MBG)外掛,使用該外掛可以很方便的生成實體類、Mapper介面以及對應的XML檔案。 下面介紹了mybatis-generator在spring-boot中的使用過程 專案依賴 pom.xml 我使