第一個Mybatis項目

(一)為什么要用Mybatis?

(1)Mybatis對比JDBC而言,sql(單獨寫在xml的配置文件中)和java編碼分開,功能邊界清晰,一個專注業務,一個專注數據。
(2)Mybatis是持久層框架,避免了大部分JDBC代碼和手動設置參數以及獲取結果集。
(3)Mybatis可以用簡單的XML或注解進行配置和原始映射,將接口和Java對象映射成數據庫中的記錄。(不用像JDBC中實體類屬性一 一對應表列名)
(4)Mybatis是一個半自動的ORM框架。

(二)Mybatis項目構建

1、開發環境準備
(1)單擊SSM2項目名,右鍵new一個module,選擇“Maven Archetype”,命名為mybatis01,并給其指定gav:
在這里插入圖片描述(2)在pom.xml中導入相關jar包:

<!--導入MyBatisHelloWorld相關jar包--><dependencies><!--導入MySQL的驅動包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!--導入MyBatis的jar包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--log4j--><!--日志記錄:查看sql語句,參數綁定,查詢結果查看--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>

(3)創建ssm數據庫及兩個表
在這里插入圖片描述
(4)創建實體類
對應employees表在src的main下面的java文件夾下新建com.atguigu.bean文件夾,里面新建一個實體類Employee,對應表的列名新建對應屬性。
在這里插入圖片描述
2、MyBatis框架的搭建
(1)創建持久層接口
在src的main下面的java文件夾下新建com.atguigu.dao文件夾,在里面新建EmployeeDao接口,里面只寫了一個根據主鍵查詢Employee對象的抽象方法:

public interface EmployeeDao {//根據主鍵查詢Employee對象Employee getById(Integer id);
}

(2)創建接口的實現類
Mybatis通過映射文件替代持久層接口的實現類(將sql語句寫在配置文件內)。
在main的resource文件夾下新建EmployeeDao.xml文件,里面要寫的頭信息去哪里找呢?
去官網鏈接,選擇“入門”,找到“探究已映射的SQL”:
在這里插入圖片描述里面的代碼就是我們需要的,復制一份到EmployeeDao.xml中,進行修改:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper標簽就是根節點,有一個namespace的屬性:指定映射文件對應的持久層接口是誰?所以屬性值是接口全類名-->
<mapper namespace="com.atguigu.dao.EmployeeDao"><!--實現該抽象方法:Employee getById(Integer id); --><select id="getById" parameterType="int" resultType="com.atguigu.bean.Employee">select id,last_name lastName,email,gender,salary,dept_id deptId from employees where id=#{id}</select>
</mapper>

3、創建Mybatis的核心配置文件
設置你要連接的數據庫是哪個,加載映射文件。
在main的resource文件夾下新建mybatis-config.xml文件,里面要寫的頭信息去哪里找呢?
去官網鏈接,選擇“入門”,找到“從XML中構建SqlSessionFactory”:
在這里插入圖片描述
將代碼復制一份到mybatis-config.xml中,進行修改:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--環境:設置數據庫的連接信息:講完Spring之后,不用這個了--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssm"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!--加載映射文件--><mappers><mapper resource="EmployeeDao.xml"/></mappers>
</configuration>

4、測試
在test文件夾下的java文件夾下新建com.atguigu文件夾,在里面新建MyBatisTest類進行測試。

public class MyBatisTest {//下面的代碼,后面將Spring之后都不用寫,只是暫時對MyBatis做測試@Testpublic void testMyBatis(){try {//1. 加載MyBatis的核心配置文件InputStream input = Resources.getResourceAsStream("mybatis-config.xml");//注意:Resource導的是ibatis那個類里的,別導錯了//2. 創建SqlSessionFactory工廠對象(設計模式之工廠模式)SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(input);//3. 從工廠內獲得一個SqlSession對象(看做之前的Connection)SqlSession sqlSession = factory.openSession();//4. 通過SqlSession對象獲取到EmployeeDao的對象//  (獲得的肯定是EmployeeDao的實現類對象,MyBatis根據映射文件生成的)EmployeeDao employeeDao = sqlSession.getMapper(EmployeeDao.class);//5. 通過EmployeeDao調用方法即可Employee employee = employeeDao.getById(1);System.out.println("employee="+employee);//6. sqlSession對象需要關閉(按照常理應該在finally中關)sqlSession.close();} catch (IOException e) {throw new RuntimeException(e);}}
}

執行Test,可以看到控制臺輸出了id=1的Employee對象了:
在這里插入圖片描述

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

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

相關文章

【C++】:多態

朋友們、伙計們&#xff0c;我們又見面了&#xff0c;本期來給大家解讀一下有關多態的知識點&#xff0c;如果看完之后對你有一定的啟發&#xff0c;那么請留下你的三連&#xff0c;祝大家心想事成&#xff01; C 語 言 專 欄&#xff1a;C語言&#xff1a;從入門到精通 數據結…

Linux(CentOS7)上安裝mysql

在CentOS中默認安裝有MariaDB&#xff08;MySQL的一個分支&#xff09;&#xff0c;可先移除/卸載MariaDB。 yum remove mariadb // 查看是否存在mariadb rpm -qa|grep -i mariadb // 卸載 mariadb rpm -e --nodeps rpm -qa|grep mariadb yum安裝 下載rpm // 5.6版本 wge…

XML映射文件

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"org.mybatis.example.BlogMapper&q…

conan 入門(三十二):package_info中配置禁用CMakeDeps生成使用項目自己生成的config.cmake

conanfile.py中定義的package_info()方法用于向package的調用者(conumer)提供包庫名&#xff0c;編譯/連接選項&#xff0c;文件夾等等信息&#xff0c;有了這些信息構建工具的generator就可以根據它們生成對應的文件&#xff0c;用于調用者引用package. 比如基于cmake的CMakeD…

線索二叉樹:C++實現

引言&#xff1a; 線索二叉樹是一種特殊的二叉樹&#xff0c;它可以通過線索&#xff08;線索是指在二叉樹中將空指針改為指向前驅或后繼的指針&#xff09;的方式將二叉樹轉化為一個線性結構&#xff0c;從而方便對二叉樹進行遍歷。本文將介紹如何使用C實現線索二叉樹。 技術…

安全地公網訪問樹莓派等設備的服務 內網穿透--frp 23年11月方法

如果想要樹莓派可以被公網訪問&#xff0c;可以選擇直接網上搜內網穿透提供商&#xff0c;一個月大概10塊錢&#xff0c;也有免費的&#xff0c;但是免費的速度就不要希望很好了。 也可以選擇接下來介紹的frp&#xff0c;這種方式不需要付費&#xff0c;但是需要你有一臺有著公…

vue3自定義拖拽指令

<template><div v-move class"box"></div> </template><script setup lang"ts"> import { Directive } from vue const vMove:Directive (el:HTMLElement) >{const mousedown (e:MouseEvent) >{// 鼠標按下const s…

【Golang】解決使用interface{}解析json數字會變成科學計數法的問題

在使用解析json結構體的時候&#xff0c;使用interface{}接數字會發現變成了科學計數法格式的數字&#xff0c;不符合實際場景的使用要求。 舉例代碼如下&#xff1a; type JsonUnmStruct struct {Id interface{} json:"id"Name string json:"name"…

Linux 的性能調優的思路

Linux操作系統是一個開源產品&#xff0c;也是一個開源軟件的實踐和應用平臺&#xff0c;在這個平臺下有無數的開源軟件支撐&#xff0c;我們常見的apache、tomcat、mysql等。 開源軟件的最大理念是自由、開放&#xff0c;那么Linux作為一個開源平臺&#xff0c;最終要實現的是…

Java反射調用kotlin中的類,Object類,Companion對

Java反射調用kotlin中的類&#xff0c;Object類&#xff0c;Companion對象 1. Java反射調用kotlin中的普通類 kotlin普通類&#xff1a; package com.common; class TestNormal {fun get():String{return "Nolmal abc"}fun showNum(v:Int){println("Nolmal s…

uniApp微信支付實現

后端&#xff1a;小程序下單 - 小程序支付 | 微信支付商戶文檔中心 服務端需要請求&#xff1a;https://api.mch.weixin.qq.com該地址獲取微信支付Api接口需要的參數。 服務端請求接口需要的Body參數&#xff1a; 客戶端&#xff08;前端&#xff09;需要調用&#xff1a;wx.…

12V降3.3V100mA穩壓芯片WT7133

12V降3.3V100mA穩壓芯片WT7133 WT71XX系列是一款采用CMOS工藝實現的三端高輸入電壓、低壓差、小輸出電流電壓穩壓器。 它的輸出電流可達到100mA&#xff0c;輸入電壓可達到18V。其固定輸出電壓的范圍是2.5V&#xff5e;8.0V&#xff0c;用戶 也可通過外圍應用電路來實現可變電壓…

加載minio中存儲的靜態文件html,不顯示樣式與js

問題描述:點擊鏈接獲取的就是純靜態文件,但是通過瀏覽器可以看到明明加載了css文件與js文件 原因:仔細看你會發現加載css文件顯示的contentType:text/html文件,原來是minio上傳文件時將所有文件的contentType設置成了text/html 要在上傳時指定文件,根據文章的類型指定的Conten…

css 固定按鈕到頁面頂部或者底部的實現方式

實現方式 要將按鈕固定到頂部或底部&#xff0c;可以使用CSS的定位屬性來實現。下面是一種常用的方法&#xff1a; 創建一個包含按鈕的HTML元素&#xff0c;例如一個<div>元素。確保給它添加一個唯一的id&#xff0c;以便在CSS中進行定位。 <div id"myButton&qu…

從二極管到linux服務器

軟件設計: os: 批處理系統: 輪詢系統:單片機裸機開發 實時系統:ucosii,rtos,rt-thread、風和系統、liteos(主要是海思系列soc在用)等 非實時系統:linux 對os任務切換時寄存器的功能有理解。 對ipc機制有理解。 bsp: 需要對寄存器、單片機內部總線、iic、spi、uart、c…

win10開機黑屏只有鼠標?這份指南幫你輕松解決!

win10是一個出色的操作系統&#xff0c;但有時用戶可能會遇到開機后只有鼠標顯示在屏幕上的問題&#xff0c;這種情況可能會讓人感到困惑和沮喪。在本文中&#xff0c;我們將介紹三種解決win10開機黑屏只有鼠標的方法&#xff0c;以幫助您快速恢復正常的桌面環境。 方法1&#…

Ubuntu18.4中安裝wkhtmltopdf + Odoo16配置【二】

deepin Linux 安裝wkhtmltopdf 1、先從官網的鏈接里下載linux對應的包 wkhtmltopdf/wkhtmltopdf 下載需要的版本&#xff0c;推薦版本&#xff0c;新測有效&#xff1a; wkhtmltox-0.12.4_linux-generic-amd64.tar.xz 2、解壓下載的文件 解壓后會有一個wkhtmltox文件夾 3…

CTA-GAN:基于生成對抗性網絡的主動脈和頸動脈非集中CT血管造影 CT到增強CT的合成技術

Generative Adversarial Network–based Noncontrast CT Angiography for Aorta and Carotid Arteries 基于生成對抗性網絡的主動脈和頸動脈非集中CT血管造影背景貢獻實驗方法損失函數Thinking 基于生成對抗性網絡的主動脈和頸動脈非集中CT血管造影 https://github.com/ying-f…

可自行DIY單TYPE-C接口設備實現DRP+OTG功能芯片

隨著USB-C接口的普及&#xff0c;歐盟的法律法規強制越來越多的設備開始采用這種接口。由于 USB-C接口的高效性和便攜性&#xff0c;使各種設備之間的連接和數據傳輸變得非常方便快捷&#xff0c;它們不僅提供了強大的功能&#xff0c;還為我們的日常生活和工作帶來了極大的便利…

Python與設計模式--代理模式

5-Python與設計模式–代理模式 一、網絡服務器配置白名單 代理模式是一種使用頻率非常高的模式&#xff0c;在多個著名的開源軟件和當前多個著名的互聯網產品后 臺程序中都有所應用。下面我們用一個抽象化的簡單例子&#xff0c;來說明代理模式。 首先&#xff0c;構造一個網絡…