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

Mybatis 簡(jiǎn)單啟動(dòng)過(guò)程入門(mén)詳解

 更新時(shí)間:2025年03月19日 09:22:34   作者:鴿鴿程序猿  
MyBatis是一個(gè)持久層框架,簡(jiǎn)化JDBC操作,SpringBoot集成MyBatis,通過(guò)創(chuàng)建項(xiàng)目、準(zhǔn)備數(shù)據(jù)、配置文件、實(shí)體類(lèi)和接口,可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作,使用@Mapper和@Select注解簡(jiǎn)化接口實(shí)現(xiàn),測(cè)試類(lèi)使用@SpringBootTest和@Test注解啟動(dòng),本文介紹Mybatis啟動(dòng)過(guò)程,感興趣的朋友一起看看吧

一、Mybatis簡(jiǎn)介

Mybatis是一個(gè)操作數(shù)據(jù)庫(kù)驅(qū)動(dòng)的持久層框架,用來(lái)簡(jiǎn)化JDBC操作的,SpringBoot集成了這個(gè)框架。

MyBatis本是 Apache的?個(gè)開(kāi)源項(xiàng)?iBatis,2010年這個(gè)項(xiàng)?由apache遷移到了google code,并且改名為MyBatis。2013年11?遷移到Github.

二、MyBatis??

2.1 創(chuàng)建項(xiàng)目

在前面跟我們前面創(chuàng)建的SpringBoot項(xiàng)目一樣,只有在選擇依賴(lài)的時(shí)候要多選擇SQL下的Mybatis Framework和MySQL Driver

2.2 準(zhǔn)備數(shù)據(jù)

直接使用下面準(zhǔn)備的數(shù)據(jù)庫(kù)數(shù)據(jù)即可:

  • 創(chuàng)建一個(gè)mybatis_test的數(shù)據(jù)庫(kù)
  • 該庫(kù)中含有user_info和article_info兩張表
  • user_info表中有主鍵id,username等等信息
  • article_info表中有主鍵id,title等等信息
-- 創(chuàng)建數(shù)據(jù)庫(kù)
DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使用數(shù)據(jù)數(shù)據(jù)
USE mybatis_test;
-- 創(chuàng)建表[用戶(hù)表]
DROP TABLE IF EXISTS user_info;
CREATE TABLE `user_info` (
        `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
        `username` VARCHAR ( 127 ) NOT NULL,
        `password` VARCHAR ( 127 ) NOT NULL,
        `age` TINYINT ( 4 ) NOT NULL,
        `gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-女 0-默認(rèn)',
        `phone` VARCHAR ( 15 ) DEFAULT NULL,
        `delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-刪除',
        `create_time` DATETIME DEFAULT now(),
        `update_time` DATETIME DEFAULT now() ON UPDATE now(),
        PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4; 
-- 添加用戶(hù)信息
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );
-- 創(chuàng)建文章表
DROP TABLE IF EXISTS article_info;
CREATE TABLE article_info (
        id INT PRIMARY KEY auto_increment,
        title VARCHAR ( 100 ) NOT NULL,
        content TEXT NOT NULL,
        uid INT NOT NULL,
        delete_flag TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-刪除',
        create_time DATETIME DEFAULT now(),
        update_time DATETIME DEFAULT now() 
) DEFAULT charset 'utf8mb4';
-- 插入測(cè)試數(shù)據(jù)
INSERT INTO article_info ( title, content, uid ) VALUES ( 'Java', 'Java正文', 1 );

2.3 配置文件

直接復(fù)制下面的代碼即可,注意要將password改寫(xiě)成你電腦上的MySQL數(shù)據(jù)庫(kù)登錄密碼。

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver

2.4 實(shí)體類(lèi)

在idea中創(chuàng)建一個(gè)類(lèi)來(lái)接收數(shù)據(jù)庫(kù)中user-info表的數(shù)據(jù),類(lèi)中的成員與user-info表中的字段一一對(duì)應(yīng):

package com.example.springmybatisdemo.model;
import lombok.Data;
import java.util.Date;
@Data
public class UserInfo {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private Integer gender;
    private String phone;
    private Integer deleteFlag;
    private Date createTime;
    private Date updateTime;
}

創(chuàng)建接口來(lái)操作數(shù)據(jù)庫(kù),使用@Mapper注解來(lái)將該接口交給Spring管理,@Select(" ")來(lái)實(shí)現(xiàn)查詢(xún)語(yǔ)句,括號(hào)中的參數(shù)寫(xiě)SQL的查詢(xún)語(yǔ)句。

  • @Mapper注解是Mybatis提供的控制反轉(zhuǎn)注解。
  • @Select注解直接將這個(gè)接口的方法給實(shí)現(xiàn)了。所以我們?cè)诤竺婵梢灾苯幼⑷脒@個(gè)接口。我們前面學(xué)習(xí)的SpringBoot的IoC注解是沒(méi)有這個(gè)功能的,如果是接口需要自己實(shí)現(xiàn)。
  • 當(dāng)我們的接口是使用@Mapper注解管理,其中有些方法有沒(méi)有使用Mybatis可以實(shí)現(xiàn)的注解,那么就會(huì)在使用時(shí)拋出異常。
package com.example.springmybatisdemo.mapper;
import com.example.springmybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
    @Select("select * from user_info")
    List<UserInfo> selectAll() ;
}

測(cè)試類(lèi),使用@SpringBootTest注解來(lái)啟動(dòng)測(cè)試類(lèi),@Test啟動(dòng)測(cè)試方法。

  • @SpringBootTest這個(gè)注解就是在運(yùn)行這個(gè)測(cè)試類(lèi)的時(shí)候加載Spring環(huán)境
  • @Test注解可以讓被修飾的方法啟動(dòng)起來(lái),就不需要使用main方法。
package com.example.springmybatisdemo;
import com.example.springmybatisdemo.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class UserInfoMapperTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    void selectAll() {
        System.out.println(userMapper.selectAll());
    }
}

2.5 執(zhí)行結(jié)果

執(zhí)行結(jié)果如下圖,確實(shí)將我們插入到user-info表中的數(shù)據(jù)拿到了:

到此這篇關(guān)于Mybatis 簡(jiǎn)單啟動(dòng)的文章就介紹到這了,更多相關(guān)Mybatis 啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解

    Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解

    這篇文章主要介紹了Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解,讀寫(xiě)鎖:一個(gè)資源能夠被多個(gè)讀線程訪問(wèn),或者被一個(gè)寫(xiě)線程訪問(wèn)但是不能同時(shí)存在讀寫(xiě)線程,需要的朋友可以參考下
    2024-01-01
  • 微服務(wù)Redis-Session共享登錄狀態(tài)的過(guò)程詳解

    微服務(wù)Redis-Session共享登錄狀態(tài)的過(guò)程詳解

    這篇文章主要介紹了微服務(wù)Redis-Session共享登錄狀態(tài),本文采取Spring security做登錄校驗(yàn),用redis做session共享,實(shí)現(xiàn)單服務(wù)登錄可靠性,微服務(wù)之間調(diào)用的可靠性與通用性,需要的朋友可以參考下
    2023-12-12
  • 一篇文章帶你了解JVM垃圾回收

    一篇文章帶你了解JVM垃圾回收

    這篇文章主要介紹了JVM的種垃圾回收,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • 如何在IDE部署springboot項(xiàng)目(有swagger和無(wú)swagger都是一樣的)到服務(wù)器或者虛擬機(jī)上的docker

    如何在IDE部署springboot項(xiàng)目(有swagger和無(wú)swagger都是一樣的)到服務(wù)器或者虛擬機(jī)上的docke

    這篇文章主要介紹了如何在IDE部署springboot項(xiàng)目(有swagger和無(wú)swagger都是一樣的)到服務(wù)器或者虛擬機(jī)上的docker,本文給大家分享我的安裝歷程,需要的朋友可以參考下
    2023-01-01
  • Spring Boot2.3 新特性分層JAR的使用

    Spring Boot2.3 新特性分層JAR的使用

    這篇文章主要介紹了Spring Boot2.3 新特性分層JAR的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 如何將java或javaweb項(xiàng)目打包為jar包或war包

    如何將java或javaweb項(xiàng)目打包為jar包或war包

    本文主要介紹了如何將java或javaweb項(xiàng)目打包為jar包或war包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringBoot結(jié)合mockito測(cè)試實(shí)戰(zhàn)

    SpringBoot結(jié)合mockito測(cè)試實(shí)戰(zhàn)

    與集成測(cè)試將系統(tǒng)作為一個(gè)整體測(cè)試不同,單元測(cè)試更應(yīng)該專(zhuān)注于某個(gè)類(lèi)。所以當(dāng)被測(cè)試類(lèi)與外部類(lèi)有依賴(lài)的時(shí)候,尤其是與數(shù)據(jù)庫(kù)相關(guān)的這種費(fèi)時(shí)且有狀態(tài)的類(lèi),很難做單元測(cè)試。但好在可以通過(guò)“Mockito”這種仿真框架來(lái)模擬這些比較費(fèi)時(shí)的類(lèi),從而專(zhuān)注于測(cè)試某個(gè)類(lèi)內(nèi)部的邏輯
    2022-11-11
  • SpringBoot創(chuàng)建RSocket服務(wù)器的全過(guò)程記錄

    SpringBoot創(chuàng)建RSocket服務(wù)器的全過(guò)程記錄

    RSocket應(yīng)用層協(xié)議支持 Reactive Streams語(yǔ)義, 例如:用RSocket作為HTTP的一種替代方案。這篇文章主要給大家介紹了關(guān)于SpringBoot創(chuàng)建RSocket服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • java使用Nagao算法實(shí)現(xiàn)新詞發(fā)現(xiàn)、熱門(mén)詞的挖掘

    java使用Nagao算法實(shí)現(xiàn)新詞發(fā)現(xiàn)、熱門(mén)詞的挖掘

    這篇文章主要介紹了java使用Nagao算法實(shí)現(xiàn)新詞發(fā)現(xiàn)、熱門(mén)詞的挖掘的思路和詳細(xì)代碼,需要的朋友可以參考下
    2015-07-07

最新評(píng)論