Spring Boot 教程(2) - Mybatis

来源:https://www.cnblogs.com/Butterfly-Tri/archive/2020/05/19/12902945.html
-Advertisement-
Play Games

Spring Boot 教程 Mybatis 1. 什麼是Mybatis? MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和映射原 ...


Spring Boot 教程 - Mybatis

1. 什麼是Mybatis?

MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和映射原始類型、介面和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)為資料庫中的記錄。

2. Spring Boot 整合 Mybatis

  • 2.1 引入maven坐標

    <!--springboot父工程-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <dependencies>
            <!--springboot框架web組件-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.2.2.RELEASE</version>
            </dependency>
            <!--mybatis整合springboot組件-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.0</version>
            </dependency>
            <!--mysql資料庫連接驅動-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.18</version>
            </dependency>
            <!--lombok組件-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.10</version>
            </dependency>
        </dependencies>
    
        <build>
            <!--springboot的maven插件-->
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <compilerArgs>
                            <arg>-parameters</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
  • 2.2 編寫代碼

    • 2.2.1 創建如圖所示的目錄結構

      記得兩個mapper文件的路徑要一致,在編譯之後mybatis的映射文件和介面文件才會在同一個目錄下。

    • 2.2.2 代碼編寫

      • 2.2.2.1 創建配置文件和啟動類

        application.yml

        butterflytri:
          databaseurl-port: 127.0.0.1:3306 # 資料庫埠
          database-name: student_db # 資料庫名
        server:
          port: 8080 # 應用埠
          servlet:
            context-path: /butterflytri # 應用映射
        spring:
          application:
            name: mybatis # 應用名稱
          datasource:
            url: jdbc:mysql://${butterflytri.databaseurl-port}/${butterflytri.database-name}?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
            driver-class-name: com.mysql.jdbc.Driver
            username: root
            password: root
        mybatis:
          type-aliases-package: org.wjf.entity # entity別名
          mapper-locations: classpath:org/wjf/mapper/*Mapper.xml # mapper映射包掃描
        

        啟動類MybatisApplication.java

        package org.butterflytri;
        
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
        
        /**
         * @author: WJF
         * @date: 2020/5/16
         * @description: MybatisApplication
         */
        @SpringBootApplication
        public class MybatisApplication {
        
            public static void main(String[] args) {
                SpringApplication.run(MybatisApplication.class,args);
            }
        
        }
        
      • 2.2.2.2 創建實體類Student

        在entity包下創建Student.java實體類。

        package org.butterflytri.entity;
        
        import lombok.Getter;
        import lombok.Setter;
        import lombok.ToString;
        
        import java.io.Serializable;
        
        /**
         * @author: WJF
         * @date: 2020/5/16
         * @description: Student
         */
        
        @ToString
        @Getter
        @Setter
        public class Student implements Serializable {
        
            private Long id;
        
            private String studentName;
        
            private String studentNo;
        
            private String sex;
        
            private Integer age;
        
        }
        
      • 2.2.2.3 編寫mybatis介面文件

        在mapper包下創建StudentMapper.java介面。

        package org.butterflytri.mapper;
        
        import org.apache.ibatis.annotations.Mapper;
        import org.butterflytri.entity.Student;
        
        import java.util.List;
        
        /**
         * @author: WJF
         * @date: 2020/5/16
         * @description:
         */
        @Mapper
        public interface StudentMapper {
        
            /**
             * 查詢所有學生信息
             * @return List<Student>
             */
            List<Student> findAll();
        
            /**
             * 通過id查詢學生信息
             * @param id
             * @return Student
             */
            Student findOne(Long id);
        
            /**
             * 通過學號查詢學生信息
             * @param studentNo
             * @return Student
             */
            Student findByStudentNo(String studentNo);
        
        }
        
      • 2.2.2.4 創建mybatis映射文件

        在mapper包下創建StudentMapper.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="org.butterflytri.mapper.StudentMapper">
            <sql id="propertyMapper">
                `ID` AS id,
                `STUDENT_NAME` AS studentName,
                `STUDENT_NO` AS studentNo,
                `SEX` AS sex,
                `AGE` AS age
            </sql>
            <select id="findAll" resultType="org.butterflytri.entity.Student">
                SELECT
                    <include refid="propertyMapper"></include>
                FROM
                    `t_student`
            </select>
            <select id="findOne" parameterType="java.lang.Long" resultType="org.butterflytri.entity.Student">
                SELECT
                    <include refid="propertyMapper"></include>
                FROM
                    `t_student`
                WHERE
                    `ID` = #{id}
            </select>
            <select id="findByStudentNo" parameterType="java.lang.String" resultType="org.butterflytri.entity.Student">
                SELECT
                    <include refid="propertyMapper"></include>
                FROM
                    `t_student`
                WHERE
                    `STUDENT_NO` = #{studentNo}
            </select>
        </mapper>
        
      • 2.2.2.5 Service層

        在service包下創建StudentService.java介面,在impl包下創建StudentServiceImpl.Java類並繼承StudentService.Java介面。

        StudentService.java

        package org.butterflytri.service;
        
        import org.butterflytri.entity.Student;
        
        import java.util.List;
        
        /**
         * @author: WJF
         * @date: 2020/5/16
         * @description: StudentService
         */
        
        public interface StudentService {
        
            public List<Student> findAll();
        
            public Student findOne(Long id);
        
            public Student findByStudentNo(String studentNo);
        }
        
        

        StudentServiceImpl.java

        package org.butterflytri.service.impl;
        
        import org.butterflytri.entity.Student;
        import org.butterflytri.mapper.StudentMapper;
        import org.butterflytri.service.StudentService;
        import org.springframework.stereotype.Service;
        
        import javax.annotation.Resource;
        import java.util.List;
        
        /**
         * @author: WJF
         * @date: 2020/5/16
         * @description: StudentServiceImpl
         */
        @Service
        public class StudentServiceImpl implements StudentService {
        
            @Resource
            private StudentMapper studentMapper;
        
            @Override
            public List<Student> findAll() {
                return studentMapper.findAll();
            }
        
            @Override
            public Student findOne(Long id) {
                return studentMapper.findOne(id);
            }
        
            @Override
            public Student findByStudentNo(String studentNo) {
                return studentMapper.findByStudentNo(studentNo);
            }
        }
        
      • 2.2.2.6 Controller層

        在controller包下創建StudentController.java控制器類。

        package org.butterflytri.controller;
        
        import org.butterflytri.entity.Student;
        import org.butterflytri.service.StudentService;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RestController;
        
        import javax.annotation.Resource;
        import java.util.List;
        
        /**
         * @author: WJF
         * @date: 2020/5/16
         * @description: StudentController
         */
        @RestController
        @RequestMapping("/student")
        public class StudentController {
        
            @Resource
            private StudentService studentService;
        
            @RequestMapping("/findAll")
            public List<Student> findAll() {
                return studentService.findAll();
            }
        
            @RequestMapping("/findOne")
            public Student findOne(Long id) {
                return studentService.findOne(id);
            }
        
            @RequestMapping("/findByStudentNo")
            public Student findByStudentNo(String studentNo) {
                return studentService.findByStudentNo(studentNo);
            }
        
        }
        
      • 2.2.2.7 啟動工程,訪問路徑

        啟動工程,訪問三個介面:

        findAll

        findOne

        findByStudentNo

3. 項目地址

本項目傳送門:spring-boot-mybatis

此教程會一直更新下去,覺得博主寫的可以的話,關註一下,也可以更方便下次來學習。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 有這樣一個場景:如果你在登錄之前輸入了http://localhost:8080/oauth2-mgm-app/#/userManage,想進入userManage頁面,但是由於沒有登錄,系統是不會讓你進入這個頁面,之後會被定向到login頁面。但是在登錄之後,認為你有這個許可權了,就需要重新定向到u ...
  • "TOC" JSP JSP:動態網頁 靜態和動態: 1. 不能和是否有“動感”混為一談 2. 是否隨著時間,地點,用戶操作而改變 動態網頁需要使用到服務端腳本語言(JSP) 架構 架構: 1. BS:網頁端 服務端 1. 如網頁版:京東、百度 2. 客戶端不需要升級 3. 維護方便 4. 不需要安裝 ...
  • 「蒲公英」期刊,每周更新,我們專註於挖掘「 基礎技術 、 工程化 、 跨端框架技術 、 圖形編程 、 服務端開發 、 桌面開發 、 人工智慧 」等多個大方向的業界熱點,並加以專業的解讀;不僅如此,我們還精選凹凸技術文章,向大家呈現團隊內的研究技術方向。 抬頭仰望,蒲公英的種子會生根發芽,如夏花絢爛; ...
  • 北航OO(2020)第三單元博客作業 [TOC] JML語言總結 理論基礎 JML是用於對Java程式進行規格化設計的一種表示語言,它使用JavaDoc註釋的方式來表示規格。JML以Java語法為基礎併進行了一定的擴充。JML的語法分為幾個層次,下麵對JML Level 0的核心特性進行簡要的總結。 ...
  • 背景 最近一口氣看完了Joshua Bloch大神的 Effective Java (下文簡稱EJ)。書中以tips的形式羅列了Java開發中的最佳實踐,每個tip都將其意圖和要點壓縮在了標題里,這種做法我很喜歡:一來比較親切,比起難啃的系統書,EJ就像是一本Java的《俚語指南》;二來記憶起來十分 ...
  • 發版流程 SNAPSHOT(快照版)--->M1(里程碑1)--->M2--->M3--->RC1(候選版本1)--->RC2--->Release(正式版)--->SR1(正式版第一次修複)--SR2--->SR3 選擇SR2版本之後的版本比較合適。之前的會有很多坑 ...
  • PYTHON 補充知識點 面向對象三大特性:封裝,繼承和多態。 繼承的意義在於兩點: 第一,子類如若繼承自父類,則自動獲取父類所有功能,並且可以在此基礎上再去添加自己獨有的功能。 第二,當子類和父類存在同樣方法時,子類的方法覆寫了父類的代碼,於是子類對象執行的將是子類的方法,即“多態”。 多態到底有 ...
  • 1 前言 良好的代碼習慣是一個優秀程式員應該具備的品質,但靠人的習慣與記憶來保證代碼質量,始終不是一件靠譜的事。在電腦行業應該深知,只要是人為的,都會有操作風險。本文講解如何通過 搭建代碼檢測平臺 ,並使用它來檢測 項目的代碼。 2 Docker安裝SonarQube 2.1 安裝 通過 安裝,方 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...