MyBatis的學習之路(二)

? ? 上篇文章介紹了MyBatis的配置文件,現在來介紹實體映射文件Mapper.xml。

? ? 說道實體映射文件,就不得不說一下實體與表之間的映射關系:單表映射和多表映射。

? ? a. 單表映射

1 public class Admin{
2     private String id;
3     private String name;
4     private String password;
5     //三個屬性的setter和getter方法
6 }

? ? 映射文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <mapper namespace="yitian.study.dao.mapper">
 6     <resultMap id="adminMapper" type="com.xxx.entity.Admin">
 7         <id property="id" column="id"/>
 8         <result property="name" column="name"/>
 9         <result property="password" column="password"/>
10     </resultMap>
11     <select id="selectAdmin"
12             resultType="Admin" parameterType="Admin">
13         SELECT *
14         FROM Admin
15         WHERE id = #{id}
16     </select>
17     <select id="selectAdminByName"
18             resultType="Admin">
19         SELECT *
20         FROM Admin
21         WHERE name = #{name}
22     </select>
23     <insert id="insertAdmin"
24             useGeneratedKeys="true">
25         INSERT INTO Admin (name, password) VALUES (#{name}, #{password})
26     </insert>
27     <update id="updateAdmin">
28         UPDATE Admin
29         SET password = #{password}
30         WHERE id = #{id}
31     </update>
32     <delete id="deleteAdmin">
33         DELETE FROM Admin
34         WHERE id = #{id}
35     </delete>
36 </mapper>
View Code

? ? 映射文件包含實體類的映射和5條SQL語句,分別是增刪查改以及按名稱查找。每一條語句都需要一個標識符(id),將會在后面再代碼中用到。如果是查詢語句還需要resultType,指定返回類型。MyBatis會將數據表列名和這里指定的類型屬性按名稱自動映射起來。如果需要在語句中傳入參數,可以使用 parameterType屬性,指定Java實體類的全名或簡寫,然后就可以在SQL語句中使用#{}來訪問參數的屬性了。如果是簡單的映射,那么parameterType屬性還可以省略,MyBatis會自動從傳入的Java對象中獲取相應的屬性。對于某些數據庫(例如MySQL),還可以在插入的時候指定useGeneratedKeys="true",讓數據庫自動生成主鍵。??

? ? 常用的方法有增刪查改這幾個方法。這些方法的第一個參數是前面我們在映射文件中定義的語句ID,第二個參數是要傳入的參數。對于查詢來說有selectOne和selectList方法,它們的區別主要在于返回個數,如果確定只返回一個對象就使用selectOne方法。

? 示例如下:

1 Admin admin = sqlSession.selectOne("selectAdminByName",name);

? ? 上述方法是采用字符串來指定要使用的查詢。MyBatis還給我們提供了一種映射類的方式來實現sql語句。

? ? 映射類其實就是一個簡單的接口。該接口中的方法和映射文件中定義的語句一一對應。接口方法的名稱必須和語句id完全相同,接口方法的返回值和參數和相應的語句相對應。

public interface AdminMapper {Admin selectAdmin(int id);Admin selectAdminByName(String name);void insertAdmin(Admin admin);void updateAdmin(Admin admin);void deleteAdmin(Admin admin);
}

? ?僅僅增加映射類還不夠,我們需要修改映射文件,以便讓MyBatis能找到這個映射類。做法就是將映射文件的命名空間改為對應的映射類的類名。

<mapper namespace="com.xxx.mapper.AdminMapper">

? ?在兩者定義好之后,我們就可以使用了。在SqlSession上調用getMapper方法,并傳入要獲取的Mapper類即可。

1 AdminMapper mapper = sqlSession.getMapper(AdminMapper.class);
2 Admin s = mapper.selectAdminByName(name);

? ? ?b. 多表映射

? ? ??關于多表映射的書寫,請參考這篇文章----《MyBatis快速入門(2):多表映射》個人覺得講的還不錯,本人就不在贅述了。

轉載于:https://www.cnblogs.com/shouming/articles/7809599.html

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

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

相關文章

計算機一級實驗素材題目,計算機一級EXCEL操作題整理素材(12頁)-原創力文檔...

素材摘錄&#xff0c;文檔可編輯分享PAGE 頁碼頁碼/NUMPAGES 總頁數總頁數單元格合并首先選中你要合并的單元格&#xff0c;然后找到EXCEL上的開始分區里的這種圖標或者是含有“合并”兩字的位置如圖1-1&#xff0c;如果題目要求的是要你合并單元格并讓內容居中&#xff0c;你就…

python爬取toefl_spark學習進度6-Python爬取數據的四個簡單實例

今天本來想把昨天安裝的intellij配置好&#xff0c;但是一直顯示沒有網絡&#xff0c;網上查了相關資料也沒有查出來解決辦法。然后暫停了intellij的配置&#xff0c;開始做了幾個Python爬取簡單數據的實例&#xff0c;先做了幾個最簡單的&#xff0c;以后再加大難度&#xff0…

Django REST framework 版本

API 版本控制允許我們在不同的客戶端之間更改行為&#xff08;同一個接口的不同版本會返回不同的數據&#xff09;。 DRF提供了許多不同的版本控制方案。 可能會有一些客戶端因為某些原因不再維護了&#xff0c;但是我們后端的接口還要不斷的更新迭代&#xff0c;這個時候通過…

AngularJS中的過濾器(filter)

AngularJS中的過濾器是用于對數據的格式化&#xff0c;或者篩選的函數&#xff0c;可以直接通過以下語法使用&#xff1a; {{expression|filter}} {{expression|filter1|filter2}} {{expression|filter1:param1,param2,...|filter2} 過濾器的種類有number&#xff0c;currency&…

計算機考試上傳照片教程,電腦照片傳到iPhone手機的詳細步驟【圖文】

蘋果自帶的iOS系統是不可以隨便和電腦進行數據交換的&#xff0c;必須使用iTunes軟件。許多用戶為此問題困擾&#xff0c;我們有什么可以把電腦照片傳到iPhone手機&#xff1f;下面我們就一起來看看把電腦照片傳到iphone設備的詳細步驟。具體方法如下&#xff1a;1&#xff0c;…

javaweb 導出文件名亂碼的問題解決方案

fileName new String(fileName.getBytes("ISO8859-1"), "UTF-8"); 或者 String finalFileName null; if(StringUtils.contains(userAgent, "MSIE")){//IE瀏覽器 finalFileName URLEncoder.encode(fileName,"UTF8"); }else if(Str…

AVS 分像素運動估計優化算法

—249—AVS 分像素運動估計優化算法楊涵悅 1&#xff0c;張兆楊1&#xff0c;滕國偉2(1. 上海大學通信學院&#xff0c;上海 200072&#xff1b;2. 上海廣電(集團)有限公司中央研究院&#xff0c;上海 200233)摘要&#xff1a;針對AVS 分像素運動估計的問題&#xff0c;提出一種…

計算機系統結構sw指令集,自考02325計算機系統結構復習資料六

自考生網為考生收集整理了“自考02325計算機系統結構復習資料六“以供考生們在考試前用復習資料鞏固所學到的知識&#xff0c;得到更好地復習效果。注&#xff1a;由于各省教材每年都有更新、變動&#xff0c;自考復習資料并不一定出于同一自考教材版本&#xff0c;但考生們仍可…

Django REST framework 源碼中提供的默認配置

DEFAULTS 是默認配置&#xff0c;IMPORT_STRINGS 是要相對應導入的類 鍵 大寫大寫大寫 ########################### settings.py ########################## DEFAULTS {# Base API policiesDEFAULT_RENDERER_CLASSES: (rest_framework.renderers.JSONRenderer,rest_framew…

python 去掉空格_如何從Python DataFrame中去除空格在這個例子中

使用applymap到數據幀&#xff0c;applymap施加一拉每個單元格上的mbda函數。在lambda函數中拆分字符串&#xff08;白色空格在其中被忽略&#xff09;然后加入它。如果有一個int&#xff0c;那么你可以在lambda函數中使用if else。 from pandas import Series, DataFrame impo…

Mware HA實戰攻略之五VMwareHA測試驗收

【IT168 專稿】在上一篇"VMware HA實戰攻略之四VMwareHA安裝及配置"中&#xff08;點擊&#xff09;&#xff0c;講述了VMwareHA的概念及創建過程&#xff0c;還講述了創建過程中要注意的一些事項。在本篇中&#xff0c;將要講述如何在群集節點之一的ESX主機上安裝虛…

AVS解碼器在DSP平臺上的優化

AVS( Audio Video Coding STandard)是由我國數字 音視頻標準工作組制定的具有自主知識產權的第二代音視頻壓縮準。AVS實行1 元專利費用的原則&#xff0c;相比其它音視頻編解碼標準具有編碼效率高、專利費用低、授權模式簡單等優勢。AVS 解碼器的結構復雜、運算量較大&#xff…

如何重做計算機系統軟件,電腦卡如何一鍵重做Win7旗艦版

電腦卡如何一鍵重做Win7旗艦版&#xff1f;小伙伴們在使用電腦的過程中系統會越來越卡&#xff0c;對于新手小白來說怎么重裝系統是一個比較煩惱的問題&#xff0c;不知道如何下手&#xff0c;從哪里開始&#xff0c;那么接下來就以云騎士裝機大師為例給小伙伴們講解一下電腦卡…

Django Rest framework Request

[Django Rest framework文檔翻譯]-Request REST framework的Request類擴展自標準的HttpRequest&#xff0c;增加了REST framework靈活的請求解析和請求驗證支持。 請求解析 REST framework的Request對象提供了靈活的請求解析&#xff0c;讓你可以像一般處理普通form數據一樣…

python去停用詞用nltk_【NLTK】安裝和使用NLTK分詞和去停詞

黃聰&#xff1a;PythonNLTK自然語言處理學習&#xff08;一&#xff09;&#xff1a;環境搭建 http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.html 安裝NLTK可能出現的問題&#xff1a; 1. pip install ntlk 2. 如果遇到缺少stopwords報錯如下&#xff1a;&am…

JavaScript知識概要

JavaScript 1.簡介 JavaScript簡介&#xff1a; JS是運行在瀏覽器端的一門腳本語言&#xff0c;一開始主要用來做瀏覽器驗證&#xff0c;但現在功能已經不止于此。 所謂腳本語言就是指&#xff0c;代碼不需要編譯&#xff0c;直接運行&#xff0c;并且讀入…

計算機文檔xsl,XSL-FO 文檔

XSL-FO 文檔XSL-FO 文檔XSL-FO 文檔是帶有輸出信息的 XML 文件。XSL-FO 文檔存儲在以 .fo 或 .fob 為文件擴展名的文件中。您也可以把 XSL-FO 文檔存儲為以 .xml 為擴展名的文件&#xff0c;這樣做的話可以使 XSL-FO 文檔更易被 XML 編輯器存取。XSL-FO 文檔結構XSL-FO 的文檔結…

vue項目cordova打包的android應用

準備工作nodejs、cordova、AndroidStudio這些在上一篇文章中已經說過了&#xff0c;這里就不重復說明。以此文記錄vue項目用cordova打包移動app的方法。 1.創建一個cordova項目&#xff0c;如創建一個名為testapp的工程&#xff1a;cordova create testapp 2.添加安卓平臺 cord…

H.264視頻開發---代碼移植

基于DSP系統開發的視頻編解碼系統&#xff0c;國內幾乎都是走的移植&#xff0c;優化的路線&#xff0c;并且移植的代碼&#xff0c;都是開源的。畢竟花費大量的人力&#xff0c;物力去開發一套自己的代碼&#xff0c;并不見得比一些成熟的開源代碼效率更高&#xff0c;健壯性更…

Django REST framework 源碼解析

先放圖&#xff0c;放圖說話&#xff0c;可能有點長 主流程 這個顏色 從setting導入默認數據流程是 這個顏色 主流程大概流程寫一下&#xff1a;as_view 實際返回view&#xff0c;并把參數{"get":"list","post":"create"}傳遞給view…