map比vo效率 mybatis_resultMap
resultmap與resulttype的區(qū)別為:對(duì)象不同、描述不同、類型適用不同
一、對(duì)象不同
1、resultmap:resultMap如果查詢出來的列名和pojo的屬性名不一致,通過定義一個(gè)resultMap對(duì)列名和pojo屬性名之間作一個(gè)映射關(guān)系。
2、resultType:resultType使用resultType進(jìn)行輸出映射,只有查詢出來的列
看源碼都要帶著問題去看,比如
UserMapper.java只有接口而沒有實(shí)現(xiàn)類,那么是如何執(zhí)行的呢?mybatis中一級(jí)緩存是如何進(jìn)行緩存與維護(hù)的?底層是如何執(zhí)行query查詢的查詢后的結(jié)果是如何處理的,為什么可以將結(jié)果集自動(dòng)映射到對(duì)象中去?
讓我們帶著上面的問題來到mybatis框架底層一探究
MyBatis 提供了XML配置和注解配置兩種方式。今天就來搞搞這兩種方式是如何實(shí)現(xiàn)的。
MyBatis 的真正強(qiáng)大在于它的語句映射,這是它的魔力所在。由于它的異常強(qiáng)大,映射器的 XML 文件就顯得相對(duì)簡(jiǎn)單。如果拿它跟具有相同功能的JDBC 代碼進(jìn)行對(duì)比,你會(huì)立即發(fā)現(xiàn)省掉了將近 95% 的代碼。MyBa
ResultMap2020-11-27 22:03:50
ResultMap
要解決的問題,屬性名和數(shù)據(jù)庫(kù)表格字段名不一致問題
在項(xiàng)目中,新建一個(gè)模塊mybatis-02,內(nèi)容和mybatis-01一樣。
1、查看數(shù)據(jù)庫(kù)user表的字段名
2、修改Java中的實(shí)體類,使其屬性名與數(shù)據(jù)庫(kù)的字段名不一致
public class User {
private int id;
private String userna
Mybatis 的輸出結(jié)果封裝
1.resultType 配置結(jié)果類型
1.1基本類型示例
List findAll();
User findById(Integer userId);
List findByName(String username);
int findTotal();
List findUserByVo(QueryVo vo);
Mybatis之resultMap2020-11-24 15:00:47
resultMap 元素是 MyBatis 中最重要最強(qiáng)大的元素。它可以讓你從 90% 的 JDBC ResultSets 數(shù)據(jù)提取代碼中解放出來,并在一些情形下允許你進(jìn)行一些 JDBC 不支持的操作。實(shí)際上,在為一些比如連接的復(fù)雜語句編寫映射代碼的時(shí)候,一份 resultMap 能夠代替實(shí)現(xiàn)同等功能的數(shù)千行代碼。Re
說明
項(xiàng)目如果需要?jiǎng)討B(tài)的生成SQL語句,那么語句中的字段名是一個(gè)比較麻煩的事情,雖然Entity對(duì)象和數(shù)據(jù)表一般是一比一按照駝峰命名法和下劃線命名法標(biāo)準(zhǔn)轉(zhuǎn)換來映射的,但是簡(jiǎn)單的將Entity對(duì)象中的屬性轉(zhuǎn)為字段名是一個(gè)有風(fēng)險(xiǎn)的操作
有沒有哪里記錄了實(shí)體類屬性和數(shù)據(jù)表字段的映射關(guān)系呢
1.生命周期,和作用域,是至關(guān)重要的,因?yàn)殄e(cuò)誤的使用會(huì)導(dǎo)致嚴(yán)重的并發(fā)問題
并發(fā)問題流程圖
注意:每一個(gè)sqlSession對(duì)應(yīng)一個(gè)業(yè)務(wù)
在用sqlSession去寫增刪改相關(guān)的業(yè)務(wù)時(shí)用提交事務(wù)(sqlSession.commit();)
在每個(gè)持久層操作完畢后要將sqlSession關(guān)閉(sqlSession.close())
本文講述獲取當(dāng)前項(xiàng)目的所有restful請(qǐng)求的詳細(xì)信息,含url、接口描述、請(qǐng)求方式等信息,主要用到了swagger的相關(guān)特性,最終返回的數(shù)據(jù)格式如下:
[{
"className": "cn.miao.controller.InfoController",
"classDesc": "InfoController",
"methodName": "getTimeStam
封裝MyBatis輸出結(jié)果2020-08-07 22:01:51
目錄一、resultType1. 簡(jiǎn)單類型(掌握)2. 對(duì)象類型(掌握)3. Map(了解)二、resultMap(了解)三、實(shí)體類屬性名和列名不同1. 使用resultMap2. 使用列別名和resultType四、模糊查詢like1. 第一種2. 第二種五、總結(jié)1. resultType2. resultMap3. 列名和屬性名不同4. like
一、resultType
6、ResultMap
要解決的問題:屬性名和字段名不一致
1、查看之前的數(shù)據(jù)庫(kù)的字段名
2、Java中的實(shí)體類設(shè)計(jì)
public class User {
private int id; //id
private String name; //姓名
private String password; //密碼和數(shù)據(jù)庫(kù)不一樣!
//構(gòu)造
//set/get
//
Mybatis創(chuàng)建statement和結(jié)果集生成statementHandler結(jié)果集處理后記
前文:Mybatis(3)執(zhí)行sql過程
statementHandler
在Mybatis的Configuration類中, 存在下面三個(gè)方法, 我們想要生成一個(gè)statment就需要通過一個(gè)statemeng的處理器
public ParameterHandler newParameterHand
Mybatis 自定義映射關(guān)系2020-06-19 21:53:31
原由
最近做項(xiàng)目,由于數(shù)據(jù)庫(kù)的字段名和pojo對(duì)象中的名稱不一樣,導(dǎo)致 Mybatis查出來的數(shù)據(jù)沒有辦法直接綁定到POJO對(duì)象上,所以我就去回顧了以下mybatis的集合綁定。
代碼
(4)輸出參數(shù)為HashMap
<
mybatis的pageHelper分頁(yè)遇上collection時(shí),total統(tǒng)計(jì)會(huì)是根據(jù)sql查詢出來的數(shù)量進(jìn)行統(tǒng)計(jì)的,而我們頁(yè)面上的總數(shù)應(yīng)該顯示我們r(jià)esultMap的數(shù)量。resultMap不要使用直接嵌套結(jié)果的方式,可是使用嵌套查詢:

以上是生活随笔為你收集整理的map比vo效率 mybatis_resultMap的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 家具防窜货防伪RFID方案
- 下一篇: 类EMD的“信号分解方法”及MATLAB