MyBatis基礎理解教程,詳細分步基礎查詢表數據練習(通俗易懂、實時更新)

一、MyBatis是什么

MyBatis 是一個持久層框架,簡化JDBC開發,它提供了一個從 Java 應用程序到 SQL 數據庫的橋梁,用于數據的存儲、檢索和映射。MyBatis 支持基本的 SQL 操作、高級映射特性以及與 Maven 等構建工具的集成。

二、持久層是什么

負責將數據保存到數據庫的那一層代碼。

是JavaEE的三層架構:表現層、業務層、持久層

三、框架又是什么

框架就是一個半成品軟件,是一套可重用的、通用的、軟件基礎代碼模型。

在框架的基礎之上構建軟件編寫更加高效、規范、通用、可拓展。

四、MyBatis 的好處:

  1. SQL 靈活性:允許開發者編寫自由的 SQL,適合復雜的查詢。
  2. 性能優勢:直接執行 SQL,通常性能更優。
  3. 易于上手:相對于全 ORM 框架,MyBatis 學習成本較低。
  4. 緩存機制:有效提高數據訪問速度。
  5. 可擴展性:插件系統允許自定義擴展。

五、MyBatis 的壞處:

  1. 配置復雜性:需要手動編寫和維護 XML 映射文件。
  2. SQL 維護:對于大型項目,SQL 語句分散在 XML 中可能導致維護困難。

六、練習:使用Mybatis查詢user表中所有數據

最基礎的簡單練習,簡單熟悉一下Mybatis

以下代碼有點多,注釋里有難點的相應解釋

1.sql創建user表,添加數據

先創建一個數據庫表,表名就叫Mybatis,一會就是要操作這張表

create database mybatis;
use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30)
);INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');

2.idea中創建模塊,導入坐標

創建Model,在自動生成的pom.xml文件中加入以下坐標,完整代碼如下:?

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--mybatis的依賴--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!--mysql數據庫--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!--junit單元測試--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!-- 添加slf4j日志api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.20</version></dependency><!-- 添加logback-classic依賴 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- 添加logback-core依賴 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency></dependencies></project>
3.編寫 MyBatis 核心配置文件 -->替換連接信息 解決硬編碼問題

創建mybatis-config文件

官網提供的文件的實例代碼,直接粘貼進去

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--數據庫連接信息--><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><!--加載sql的映射文件的路徑,這里這個路徑做到這里還沒有,回頭再添加的--><!--resources屬性自動會從類的根路徑下開始查找資源--><mapper resource="UserMapper.xml"/></mappers>
</configuration>
4.編寫 SQL映射文件-->統一管理sq|語句,解決硬編碼問題

創建UserMapper.xml,sql表有的會暫時報錯,沒有影響,下面會提供解決方法,test報錯是數據庫軟件的問題,也沒有影響,不用管

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名稱空間-->
<mapper namespace="test"><select id="selectAll" resultType="com.yufei.pojo.User">select * from tb_user;</select>
</mapper>
5. 編碼
????????????????1.定義POJO類

(創建user類,getset、tostring方法)

package com.yufei.pojo;public class User {private Integer id;private String username;private String password;private String gender;private String addr;public Integer getId() {return id;}public void setId(Integer 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;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", gender='" + gender + '\'' +", addr='" + addr + '\'' +'}';}
}

? ? ? ? ? ? ? ?234步在MybatisDemo類中編寫

????????????????2.加載核心配置文件,獲取SqlSessionFactory對象
//1.加載Mybatis核心配置文件,獲取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
????????????????3.獲取SqlSession對象,執行SQL語句
//2.獲取SqlSession對象,用它來執行sql語句SqlSession sqlSession = sqlSessionFactory.openSession();//3.執行sqlList<User> users = sqlSession.selectList("test.selectAll");System.out.println(users);
????????????????4. 釋放資源
 //4.釋放資源sqlSession.close();
6.最后在resources中加入logback.xml配置文件

保存好了,用到直接復制粘貼

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示當前的日志信息是可以輸出到控制臺的。--><appender name="Console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern></encoder></appender><logger name="com.yufei" level="DEBUG" additivity="false"><appender-ref ref="Console"/></logger><!--level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 默認debug<root>可以包含零個或多個<appender-ref>元素,標識這個輸出位置將會被本日志級別控制。--><root level="DEBUG"><appender-ref ref="Console"/></root>
</configuration>

全部編寫完成的包,別有落下的,一共五個。

運行,成功獲取到數據庫中的數據

七、在IDEA中配置Mysql的數據庫連接(sql文件報錯的原因)

連接成功,在IDEA中就可以查看數據庫!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19630.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19630.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19630.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IDEA增加.gitignore文件后的處理

IDEA增加 .gitignore 文件后&#xff0c;但還是被 git 跟蹤了。 我的文件已經被添加到 .gitignore 中&#xff0c;但仍然被 Git 跟蹤&#xff0c; 文件被修改后commint中就會存在此文件。 原因: 文件已經被提交過了 如果文件在添加到 .gitignore 之前已經被提交到 Git 倉庫中,…

Spring boot集成通義千問大模型

Spring boot集成通義千問大模型 背景 我在用idea進行java開發時發現了通義靈碼這款免費的智能代碼補全插件&#xff0c;用了一段時間了&#xff0c;感覺很不錯。就想著在自己的項目中也能集成通義千問大模型實現智能回答&#xff0c;畢竟對接openai需要解決網絡問題&#xff…

戰略合作 | 竹云賦能雁塔區數字經濟高質量發展

2024年5月30日&#xff0c;由西安市數據局指導&#xff0c;中共西安市雁塔區委、西安市雁塔區人民政府主辦的 “雁塔區企業數字化轉型發展大會” 在西安開幕。 本次活動以“數智雁塔&#xff0c;引領未來”為主題&#xff0c;特邀業內150余位政府、數字化服務企業、傳統行業企…

Kubernetes 之 DaemonSet 基本原理

Kubernetes 之 DaemonSet 基本原理 DaemonSet 定義 DaemonSet 確保全部&#xff08;或者某些&#xff09;節點上運行一個 Pod 的副本。 當有節點加入集群時&#xff0c; 也會為他們新增一個 Pod 。 當有節點從集群移除時&#xff0c;這些 Pod 也會被回收。刪除 DaemonSet 將會…

先導微型數控桌面式加工中心

隨著數控技術、傳感器技術、人工智能等技術的不斷發展&#xff0c;制造業的快速發展和技術的不斷進步&#xff0c;小型五軸加工中心的性能將不斷提升&#xff0c;五軸聯動技術作為解決異性復雜零件高效優質加工問題的重要手段&#xff0c;使其具有更廣泛的應用前景。小型五軸加…

【啟明智顯分享】國產自主ZX7981P Wi-Fi6 5G-CPE開發板有哪些優勢?

在當前競爭激烈的智能設備市場中&#xff0c;高性能與低功耗的開發板已然成為各大產品追求的關鍵優勢。 今天我們從國產自主研發的ZX7981P Wi-Fi6 5G-CPE開發板的特點出發&#xff0c;分析他是否滿足市場追求的特點。 主要特點&#xff1a; 1. 強大配置&#xff0c;穩定可靠 …

5.30 學習總

刷題記錄(Codeforces Round 947 &#xff08;Div. 1 Div. 2&#xff09;B,C題)和Codeforces Round 948 &#xff08;Div. 2&#xff09;B題 一.B. 378QAQ and Mochas Array B. 378QAQ and Mochas Array time limit per test 1 second memory limit per test 256 megabytes in…

長難句5.30

Researchers measured people’s cortisol, which is a stress marker, while they were at work and while they were at home and found it higher at what is supposed to be a place of refuge. 研究人員測量了人們在工作中和在家里的皮質醇(壓力的一種標志)&#xff0c;結…

在 JavaScript 中循環遍歷數組的多種方法

在JavaScript編程中,遍歷數組是一個非常常見的操作。根據不同的需求和JavaScript的不同版本,我們有多種方法來完成這一操作。本文將介紹幾種有效的方法,包括現代的和傳統的方式,同時分析每一種方法的優缺點。 1. 使用 for...of 語法 for...of 是在 ECMAScript 2015(ES6)…

Spring Boot集成statemachine快速入門demo

1.什么是statemachine&#xff1f; Spring Statemachine 是應用程序開發人員在 Spring 應用程序中使用狀態機概念的框架&#xff0c;從設計層面分析&#xff1a;狀態機目的是解決復雜的狀態管理流程&#xff0c;保證程序單一原則和開閉原則&#xff1b;業務角度分析&#xff1…

【面試】什么是Java虛擬機

目錄 1. 說明2. 關鍵點 1. 說明 1.Java虛擬機&#xff08;Java Virtual Machine&#xff0c;簡稱JVM&#xff09;是運行所有Java程序的抽象計算機&#xff0c;是Java語言的運行環境。2.JVM是Java平臺無關性的關鍵&#xff0c;它允許Java程序在任何支持JVM的硬件和操作系統上運…

【大數據面試題】34 手寫一個 Flink SQL 樣例

一步一個腳印,一天一道大數據面試題 博主希望能夠得到大家的點贊收,藏支持!非常感謝~ 點贊,收藏是情分,不點是本分。祝你身體健康,事事順心! 我們來看看 Flink SQL大概流程和樣例: 流程: 1.創建 流處理環境 StreamExecutionEnvironment env 2.創建 表環境 StreamTab…

為啥裝了erlang,還報錯erl: command not found?

轉載說明&#xff1a;如果您喜歡這篇文章并打算轉載它&#xff0c;請私信作者取得授權。感謝您喜愛本文&#xff0c;請文明轉載&#xff0c;謝謝。 問題背景&#xff1a; 在一臺不通外網的服務器上裝rabbitmq&#xff0c;然后在啟動的時候&#xff0c;遇到了報錯 “/usr/lib/…

C#中使用Mapster

Mapster是一個開源的.NET對象映射庫&#xff0c;它提供了一種簡單而強大的方式來處理對象之間的映射。 多個映射框架的性能對比&#xff1a; 第一步安裝Mapster 使用方法 public class Test {public string name { get; set; }public string sex { get; set; }public string…

C語言數據結構(超詳細講解)| 二叉樹的實現

二叉樹 引言 在計算機科學中&#xff0c;數據結構是算法設計的基石&#xff0c;而二叉樹&#xff08;Binary Tree&#xff09;作為一種基礎且廣泛應用的數據結構&#xff0c;具有重要的地位。無論是在數據庫索引、內存管理&#xff0c;還是在編譯器實現中&#xff0c;二叉樹都…

記錄Win11安裝打印機驅動過程

1. 首先下載打印機對應型號的驅動 可以從這里下載&#xff1a;打印機驅動,打印機驅動下載 - 打印機驅動網 2. 下載 3. 打開控制面板-->設備和打印機 找到目標打印機添加設備即可 新增打印紙張尺寸

B站稿件生產平臺高可用建設分享

背景 B站作為國內領先的內容分享平臺&#xff0c;其核心功能之一便是支持UP主們創作并分享各類視頻內容。UP主稿件系統作為B站內容生產的關鍵環節&#xff0c;承擔著從內容創作到發布的全過程管理。為了滿足不同創作者的需求&#xff0c;B站提供了多種投稿渠道&#xff0c;包括…

方差分析的七種類型

方差分析&#xff08;ANOVA&#xff09;是一種用于檢驗兩個以上樣本均數差別的顯著性統計方法。根據不同的研究設計和數據類型&#xff0c;方差分析可以分為以下7種類型。 一、單因素方差分析 ①單因素方差分析說明 單因素方差分析用于研究一個定類數據&#xff08;自變量&am…

【原創教程】MES服務器與成品打標機控制說明

1 實現的功能及應用的場合 MES即制造執行系統(manufacturing execution system,簡稱MES),即在加強MRP計劃的執行功能,把MRP計劃同車間作業現場控制,通過執行系統聯系起來。 MES是一個生產管理智能化的一個系統,是用于生產時記錄數據、產量等信息的智能管理系統。 該項…

SpockMockStatic方法

SpockMockStatic方法 參考: https://blog.csdn.net/knighttools/article/details/44630975 ? static方法 import com.meituan.mafka.client.producer.IProducerProcessor; import com.meituan.mdp.langmodel.api.message.AssistantMessage; import com.sankuai.gaigc.arrang…