mybatis聯合查詢(未關聯)
描述:有三張表,商家登入表,商家表,商家資料資訊表。商家登入後,通過商家id去查詢商家表資訊,然後通過商家表id去查詢商家資料表資訊,登入成功後需儲存三張表資訊到session中。這其中需要用到聯合查詢。
1.Mapper
2.dao返回List<String,Object><span style="font-family:Microsoft YaHei;"><select id="selectAccountInfors" parameterType="java.lang.String" resultType="map"> select sm.id as sm_id, `name`,......, smi.id as smi_id, ......, mark<span style="white-space:pre"> </span> from seller_merchant as sm <span style="white-space:pre"> </span>//聯合查詢第二張和第三張表 inner join seller_merchant_info as smi on smi.merchantId = sm.id where sm.accountId=#{accountid} </select></span>
3.impl<span style="font-family:Microsoft YaHei;">/** * 查詢登入商家的商戶表和商戶資料表資訊 * @param accountid * @return */ <strong><span style="color:#ff0000;">public List<Map<String,Object>> selectAccountInfors(String accountid);</span></strong></span>
4.controller<span style="font-family:Microsoft YaHei;">public boolean queryMerchant(SellerMerchantAccount merchant,HttpSession session) { CriteriaParameter cp = new CriteriaParameter(); Criteria cri = cp.createCriteria(); cri.equalTo("account", merchant.getAccount()); cri.equalTo("state", 0); //判斷是否有該使用者,且該使用者的狀態必須是可用狀態 List<SellerMerchantAccount> account = accountMapper.selectByExample(cp); if(!account.isEmpty()){ cri.equalTo("password", merchant.getPassword()); //判斷使用者名稱,密碼,狀態 List<SellerMerchantAccount> acc = accountMapper.selectByExample(cp); if(!acc.isEmpty()){ //根據使用者賬號id獲取商家表資訊 String accountid = null; for (SellerMerchantAccount sellerMerchantAccount : acc) { accountid = sellerMerchantAccount.getId(); } MerchantInformation information = new MerchantInformation(); information.setId(accountid); information.setAccount(merchant.getAccount()); information.setLoginTime(BaseUtil.timeToString(new Date())); <strong><span style="color:#ff0000;">List<Map<String,Object>> l = accountMapper.</span></strong><span style="color:#ff0000;"><strong>selectAccountInfors</strong></span><strong><span style="color:#ff0000;">(accountid)</span></strong>; for (Map<String, Object> map : l) { information.setLoginAccountInfors(map); } //將使用者的賬號id,賬號,登入時間,商戶表,商戶資料資訊表儲存到session中 session.setAttribute("MERCHANT_LOGIN-INFOR",information); return true; } } return false; }</span>
<span style="font-family:Microsoft YaHei;">/**
* 商戶登入
* @param account
* @return
*/
@RequestMapping(value="/loginMerchant",method=RequestMethod.POST)
public ResultData loginMerchant(SellerMerchantAccount account,HttpSession session){
try {
return new ResultData(merchantService.queryMerchant(account, session));
} catch (Exception e) {
e.printStackTrace();
return SchExceptionUtil.ExceptionConvertState(e);
}
}</span>
5.實體類(是自己建立的,沒有資料庫,相對於用來儲存資訊的)
<span style="font-family:Microsoft YaHei;">/**
* 商戶賬戶id
*/
private String id ;
/**
* 商戶賬戶
*/
private String account;
/**
* 商戶登入時間
*/
private String loginTime;
/**
* 商戶表和商戶資料表
*/
<span style="color:#ff0000;"><strong>private Map<String,Object> loginAccountInfors;//用來儲存聯合查詢的結果</strong></span></span>
聯合查詢就用這種方式,返回Map鍵值對;關聯物件就用<association>,集合就用<collection>
相關推薦
mybatis聯合查詢(未關聯)
描述:有三張表,商家登入表,商家表,商家資料資訊表。商家登入後,通過商家id去查詢商家表資訊,然後通過商家表id去查詢商家資料表資訊,登入成功後需儲存三張表資訊到session中。這其中需要用到聯合查
mybatis聯合查詢(2)
目得:查詢評論的同時,將評論的圖片查詢出來 1.xml如下: <span style="font-family:Microsoft YaHei;"> <select id="sele
SQL多表聯合查詢(LEFT JOIN)條件差異
logs 技術分享 .cn where 聯合查詢 uid exist 包含 into 查詢A: select a.*,b.* into Bus605115_ON_Where_And --(642 行受影響) from PositionN a left join szt
MyBatis學習總結(九)---基於XML多表聯合查詢(一對一、一對多、多對多)
1、一對一的關聯 使用association,association元素用於處理“has-one”(一對一)這種型別關係。 作用:針對pojo物件屬性的對映,它的兩個主要引數此時對應的值: javaType對應pojo類名, property對應pojo的
Mybatis使用generator自動生成的Example類使用OR條件查詢 mybatis example使用 and和or聯合查詢(轉) MyBatis - MyBatis Generator 生成的example 如何使用 and or 簡單混合查詢 關於Mybatis的Example(an
參考:https://blog.csdn.net/qq_36614559/article/details/80354511 public List<AssetsDevicetypeRefactor> fetchDevicetypeByInfosysi
mybatis學習筆記(十一)多對多關聯查詢/級聯操作
package com.mybatis.test; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessi
mybatis-查詢(resultMap,關聯集合)-15
場景:查詢部門下的所有員工 第一種方式:巢狀結果集方式 第二種方式:分步查詢方式 第一種方式:巢狀結果集方式 javaBean public class Department { private Integer id; privat
Mybatis模糊查詢(like)
val ons param pass bin size user att pat 1. 參數中直接加入%% param.setUsername("%CD%");param.setPassword("%11%"); <select id="selectPerson
【筆記】Mybatis高階查詢(八)--列舉處理器的使用
在sys_role中有一個欄位enabled,只有2個可選值,0-禁用,1-啟用。在SysRole中使用了Integer enabled來定義,這種情況下必須手動校驗enabled的值是否符合要求,在只有2個值的時候處理比較容易,但當值很多的時候,處理就比較麻煩。這時候就要使用Myb
【筆記】Mybatis高階查詢(七)--儲存過程呼叫
以下例子展示Mybatis儲存過程呼叫,與普通查詢基本一樣,只是在配置對映時要加上statementType=“CALLABLE”,由於儲存過程方式不支援Mybatis的二級快取,所以要加上useCache=“false”。 在儲存過程中使用引數時,除了配置屬性名外,還需要指定
【筆記】Mybatis高階查詢(六)--鑑別器discrimiator的使用
<discrimiator>鑑別器標籤用來處理不同資料型別執行不同操作的。與java的switch語句相似。有以下屬性: column:該屬性用於設定要進行鑑別比較值的列。 javaType:該屬性用於指定列的資料型別,保證使用相同的java
【筆記】Mybatis高階查詢(小結)--巢狀查詢及延遲載入
<association>與<collection>標籤一對一、一對多,多對多查詢時用到的屬性 property:對應實體類中的屬性名,必填項。 javaType:屬性對應的型別。 resultMap:可以直接使用現有
【筆記】Mybatis高階查詢(五)--使用resultMap的<collection>進行巢狀查詢及延遲載入
下面例子通過<collection>實現一個通過使用者編號查詢使用者下面的角色及許可權的需求,支援延遲載入。下面以自下而上的過程來實現這樣的巢狀查詢功能。並且這個自下而上的過程中每一個方法都是獨立可用的方法。上層的結果都以下層方法為基礎。所有物件都設定為延遲載入。
【筆記】Mybatis高階查詢(四)--使用resultMap的<collection>標籤實現一對多和多對多查詢
<collection>集合的巢狀結果對映就是指通過一次SQL查詢將所有的結果查詢出來,然後對映到不同的物件中。在一對多的關係中,主表一條資料會對應關聯表的多條資料。因此一般查詢時會查詢出多條結果,按照一對多的資料對映時,最終的結果數會小於等於查詢的總記錄數。
【筆記】Mybatis高階查詢(三)--使用<association>標籤實現巢狀查詢及延遲載入
<association>標籤實現巢狀查詢,需要用到以下屬性: select:另一個對映查詢的ID,Mybatis會額外執行這個查詢獲取巢狀物件的結果。 column:列名或別名,將主查詢中列的結果作為巢狀查詢的引數,配置方式如column=
sql聯合查詢(內聯 左聯 右聯 全聯)
分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
【筆記】Mybatis高階查詢(九)--Mybatis程式碼生成器的使用
Mybatis Generator,簡稱MBG,是Mybatis開發團隊提供的一個很強大的程式碼生成器,可以生成資料庫表對應的實體類、Mapper介面類、Mapper XML檔案和Example物件等。這些程式碼檔案幾乎包含了全部的單表操作方法。使用MBG可
MyBatis一對多查詢(使用resultMap)
【需求】 查詢訂單以及訂單明細的資訊。 確定主查詢表:訂單表orders 確定關聯查詢表:訂單明細表 orderdetail 在一對一查詢的基礎上新增訂單明細表關聯即可。 【分析】 使用resultMap將上面的查詢結果對映到pojo中,訂單資訊有重複。
mysql常用語句——多表聯合查詢(一)
學習筆記: 學生選課資料庫SCT 學生表(學號,姓名,性別,年齡,院系編號,班級) Student(S# char(8),Sname char(10),Ssex char(2),Sage integer,D# char(2),Sclass char(6) 院系表(院系編號
【MySQL】多表聯合查詢(新增查詢欄位、引數設定)
所羅門王說:沒有智慧解決不了的問題。SELECT * from tb_corporation_and_user 人員所在團隊 (`user_id`, `corporation_id` , `role_id` ) SELECT * from tb_corporati