1. 程式人生 > >mybatis聯合查詢(未關聯)

mybatis聯合查詢(未關聯)

描述:有三張表,商家登入表,商家表,商家資料資訊表。商家登入後,通過商家id去查詢商家表資訊,然後通過商家表id去查詢商家資料表資訊,登入成功後需儲存三張表資訊到session中。這其中需要用到聯合查詢。


1.Mapper

<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>
2.dao返回List<String,Object>
<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>
3.impl
<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>
4.controller
<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學習筆記十一多對多關聯查詢/級聯操作

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