mybatis联合查询(未关联)

原创 2015年11月18日 17:26:04

描述:有三张表,商家登录表,商家表,商家资料信息表。商家登录后,通过商家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联合查询

  • 2016年06月16日 18:30
  • 1.28MB
  • 下载

MyBatis - CRUD+多表联合查询

  • 2016年06月27日 22:18
  • 916KB
  • 下载

关联数据库表多表联合查询

insert into employee (id,position,xueli,emplyee_name) values(1,1,4,'杨忠宇'); 就是说这个员工  是高中学历...
  • yboker
  • yboker
  • 2012年12月05日 11:55
  • 6445

关联数据库字典表的多表联合查询

insert into employee (id,position,xueli,emplyee_name) values(1,1,4,'杨忠宇'); 就是说这个员工  是高中学历...

mysql联合查询和关联查询

最近面试中,Java的都会考察数据库,写SQL语句,大多数就问关联查询,索引看看下面三个关联查询的 SQL 语句有何区别?SELECT * FROM score, student WHERE scor...

Mysql联合查询UNION和UNION ALL的使用介绍 可以查询出多张没有关联关系的表的数据

一、UNION和UNION ALL的作用和语法 UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。 UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必...
  • semial
  • semial
  • 2015年12月29日 10:24
  • 4089

Hibernate-没有外键关联的两个表做联合查询

有两个表Zsplcxxb(流程表)和Lcsplsb(流程审批历史表),两个表都有lcbh(流程编号),但是没有设置外键关联,做以下的查询: from Zsplcxxb as a inner jo...

mybatis多表联合查询及优化

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 序 这篇文章我打算来简单的谈谈 mybatis 的多表联合查询。起初是觉得挺简单的,没必要拿出来写,毕竟...

MyBatis 多表联合查询及优化

下面就来说一下 mybatis 是通过什么来实现多表联合查询的。首先看一下表关系,如图: 这里,我已经搭好了开发的环境,用到的是 SpringMVC + Spring + MyB...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybatis联合查询(未关联)
举报原因:
原因补充:

(最多只允许输入30个字)