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

MyBatis深入分析數(shù)據庫交互與關系映射

 更新時間:2024年05月04日 09:32:36   作者:從零開始的-CodeNinja之路  
這篇文章主要介紹了MyBatis中的數(shù)據庫交互與關系映射,MyBatis是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射,MyBatis避免了幾乎所有的JDBC代碼和手動設置參數(shù)以及獲取結果集,需要的朋友可以參考下

前言

在應用分層學習時,我們了解到web應用程序?般分為三層,即:Controller、Service、Dao.之前的案例中,請求流程如下:瀏覽器發(fā)起請求,先請求Controller,Controller接收到請求之后,調用Service進行業(yè)務邏輯處理,Service再調用Dao,真實的數(shù)據從數(shù)據庫中是讀取.

什么是MyBatis

MyBatis是?款優(yōu)秀的持久層框架,用于簡化JDBC的開發(fā)。

在上面我們提到?個詞:持久層

持久層:指的就是持久化操作的層,通常指數(shù)據訪問層(dao),是用來操作數(shù)據庫的.

簡單來說:MyBatis是更簡單完成程序和數(shù)據庫交互的框架,也就是更簡單的操作和讀取數(shù)據庫工具

Mybatis操作數(shù)據庫的步驟:

  • 準備工作(創(chuàng)建springboot工程、數(shù)據庫表準備、實體類
  • 引入Mybatis的相關依賴,配置Mybatis(數(shù)據庫連接信息)
  • 編寫SQL語句(注解/XML)
  • 測試

MyBatis準備工作

(創(chuàng)建工程、數(shù)據庫表準備、實體類)

創(chuàng)建springboot工程,并導入mybatis的起步依賴、mysql的驅動包

Mybatis是?個持久層框架,具體的數(shù)據存儲和數(shù)據操作還是在MySQL中操作的,所以需要添加MySQL驅動

項目工程創(chuàng)建完成后,項目管理器會自動在pom.xml?件中,導入Mybatis依賴和MySQL驅動依賴

配置數(shù)據庫

Mybatis中要連接數(shù)據庫,需要數(shù)據庫相關參數(shù)配置

  • MySQL驅動類
  • 登錄名
  • 密碼
  • 數(shù)據庫連接字符串

如果是application.yml?件,配置內容如下:(一定要注意空格和對齊,沒對齊就報錯,直接進行Copy即可,手寫極其容易出錯)

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: 232122
    driver-class-name: com.mysql.cj.jdbc.Driver
  mvc:
    favicon:
      enable: false
  profiles:  
    active: dev

mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true

logging:
  file:
    name: logs/springboot.log
  logback:
    rollingpolicy:
      max-file-size: 1KB
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
  level:
    com:
      example:
        demo: debug

如果是application.properties?件,配置內容如下:

#驅動類名稱
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#數(shù)據庫連接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false

#連接數(shù)據庫的用戶名
spring.datasource.username=root

#連接數(shù)據庫的密碼
spring.datasource.password=root

編寫SQL語句(注解/XML)

數(shù)據準備

在自己的數(shù)據庫中,創(chuàng)建用戶表,并創(chuàng)建對應的實體類User

代碼如下:(直接進行Copy即可,手寫太過麻煩)

-- 創(chuàng)建數(shù)據庫
DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使用數(shù)據數(shù)據
USE mybatis_test;
-- 創(chuàng)建表[用戶表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (
`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-默認',
`phone` VARCHAR ( 15 ) DEFAULT NULL,
`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-刪除',
`create_time` DATETIME DEFAULT now(),
`update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
-- 添加用戶信息
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );

創(chuàng)建對應的實體類UserInfo,實體類的屬性名與表中的字段名??對應

例如:數(shù)據庫的字段名是user_name,在idea中我們就要創(chuàng)建userName的變量來接收,前面我們已經導入了駝峰自動轉換,所以不必擔心在數(shù)據庫交互時的連接問題

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;
}

寫持久層代碼

Mybatis的持久層接?規(guī)范?般都叫XxxMapper

@Mapper注解:表示是MyBatis中的Mapper接?

  • 程序運行時,框架會自動生成接?的實現(xiàn)類對象(代理對象),并給交Spring的IOC容器管理
  • @Select注解:代表的就是select查詢,也就是注解對應方法的具體實現(xiàn)內容.

在上面的測試中,我們需要創(chuàng)建持久層接?UserInfoMapper

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserInfoMapper {
	//查詢所有用戶
	@Select("select username, `password`, age, gender, phone from userinfo")
	public List<UserInfo> queryAllUser();
}

上述代碼中我是使用了一個xml的方式(就是加注解)來操作數(shù)據庫的

測試

使用Idea自動生成測試類

在需要測試的Mapper接?中,右鍵->Generate->Test

選擇要測試的方法,點擊OK

書寫測試代碼

import com.example.demo.model.UserInfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest//注意,此處的SpringBootTest必須填上,它是為了引入前面所寫代碼引入的注解
class UserInfoMapperTest {
	@Autowired
	private UserInfoMapper userInfoMapper;
	@Test
	void queryAllUser() {
		List<UserInfo> userInfoList = userInfoMapper.queryAllUser();
		System.out.println(userInfoList);
	}
}

總結

Mybatis操作數(shù)據庫的步驟:

  • 準備工作(創(chuàng)建springboot工程、數(shù)據庫表準備、實體類)
  • 引入Mybatis的相關依賴,配置Mybatis(數(shù)據庫連接信息)
  • 編寫SQL語句(注解/XML)
  • 測試

以上就是MyBatis深入分析數(shù)據庫交互與關系映射的詳細內容,更多關于MyBatis數(shù)據庫交互的資料請關注腳本之家其它相關文章!

相關文章

  • Maven中央倉庫發(fā)布的實現(xiàn)方法

    Maven中央倉庫發(fā)布的實現(xiàn)方法

    最近做了個項目,希望能夠上傳到maven中央倉庫,給更多的人使用,于是就產生了這次項目發(fā)布經歷。感興趣的可以一起來參考一下
    2021-06-06
  • Java之如何讀取Excel獲取真實行數(shù)

    Java之如何讀取Excel獲取真實行數(shù)

    這篇文章主要介紹了Java之如何讀取Excel獲取真實行數(shù)問題,具有很好的參考價值,希望對大家有所幫助。
    2023-06-06
  • springboot的實體類字段校驗的分組校驗具體實現(xiàn)步驟

    springboot的實體類字段校驗的分組校驗具體實現(xiàn)步驟

    分組校驗允許在不同場景下對同一實體類應用不同的校驗規(guī)則,通過定義分組接口、在實體類和Controller中指定分組,以及全局異常處理,可以靈活控制校驗規(guī)則,本文介紹springboot的實體類字段校驗的分組校驗,感興趣的朋友一起看看吧
    2025-03-03
  • 詳解elasticsearch實現(xiàn)基于拼音搜索

    詳解elasticsearch實現(xiàn)基于拼音搜索

    這篇文章主要為大家介紹了詳解elasticsearch實現(xiàn)基于拼音搜索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 通過idea創(chuàng)建Spring Boot項目并配置啟動過程圖解

    通過idea創(chuàng)建Spring Boot項目并配置啟動過程圖解

    這篇文章主要介紹了通過idea創(chuàng)建Spring Boot項目并配置啟動過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • SpringBoot之Controller的使用詳解

    SpringBoot之Controller的使用詳解

    本篇文章主要介紹了SpringBoot之Controller的使用詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • Java中WeakHashMap的回收問題詳解

    Java中WeakHashMap的回收問題詳解

    這篇文章主要介紹了Java中WeakHashMap的回收問題詳解,WeakHashMap弱鍵大致上是通過WeakReference和ReferenceQueue實現(xiàn),WeakHashMap的key是"弱鍵",即是WeakReference類型的,ReferenceQueue是一個隊列,它會保存被GC回收的"弱鍵",需要的朋友可以參考下
    2023-09-09
  • 在Spring中編寫事務的介紹

    在Spring中編寫事務的介紹

    今天小編就為大家分享一篇關于在Spring中編寫事務的介紹,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Docker與Kubernetes部署Java應用容器化實踐指南

    Docker與Kubernetes部署Java應用容器化實踐指南

    容器化是一種將應用程序及其依賴打包成一個可移植的單元的方法,容器能夠在任何環(huán)境中運行,并且具有隔離性、可擴展性和高效性,這篇文章主要介紹了Docker與Kubernetes部署Java應用容器化實踐指南的相關資料
    2026-05-05
  • 詳解使用Mybatis-plus + velocity模板生成自定義的代碼

    詳解使用Mybatis-plus + velocity模板生成自定義的代碼

    這篇文章主要介紹了詳解使用Mybatis-plus + velocity模板生成自定義的代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03

最新評論

洛扎县| 始兴县| 醴陵市| 诸城市| 历史| 津市市| 台湾省| 普兰县| 宜川县| 柘城县| 朝阳区| 肥东县| 灌云县| 宾阳县| 玉龙| 武穴市| 永昌县| 阜新市| 克拉玛依市| 湛江市| 肃宁县| 新野县| 华池县| 清镇市| 富顺县| 雅江县| 蒙阴县| 丰镇市| 墨竹工卡县| 葵青区| 呼图壁县| 永定县| 鸡泽县| 水富县| 察雅县| 循化| 喀喇沁旗| 奎屯市| 河北区| 长治市| 手游|