ibatIS中$与#的差别

ibatIS中$与#的区别

在ibatIS中经常会用到: $ 和 # 符号。

 

一、区别

$aaa$ 输出参数是以字符串方式直接输出 123

#aaa# 输出参数是以Parameter方式输出 @aaa

 

二、实际应用

1.sqlMap配置文件

<!-- 查询左树菜单 -->
<select id="queryMenu"  parameterClass="com.hanpeng.base.phone.model.TEmployeePriv" 
	resultClass="com.hanpeng.base.phone.model.TEmployeePriv">
   SELECT 
     t1.PRIV_NUM as privNum ,      
     t1.PRIV_NAME as privName ,      
     t1.PRIV_PAGE as privPage ,      
     t1.PRIV_PAGE_DEFAULT as privPageDefault ,      
     t1.PRIV_URL as privUrl ,      
     t1.PRIV_INFO as privInfo ,      
     t1.MENU_ID_1 as menuId1 ,      
     t1.MENU_ID_2 as menuId2 ,      
     t1.MENU_ID_3 as menuId3 ,      
     t1.MENU_ID_DEFAULT as menuIdDefault ,      
     t1.MENU_RANK_1 as menuRank1 ,      
     t1.MENU_RANK_2 as menuRank2 ,      
     t1.MENU_RANK_3 as menuRank3 ,      
     t1.MENU_RANK_DEFAULT as menuRankDefault ,      
     t1.RANK as rank ,      
     t1.RANK_DEFAULT as rankDefault ,      
     t1.REMARK as remark ,      
     t1.PRIV_TYPE as privType       
   FROM T_EMPLOYEE_PRIV t1
 	left join T_ROLE_PRIV t2 on t1.priv_num=t2.priv_num
 	left join T_EMPLOYEE_SAFE t3 on t3.role_num=t2.role_num 
where t3.employee_id=#employeeId#
order by $menuRank1$
</select>

 2.java代码中应用

public List<List<TEmployeePriv>> queryMenu(TEmployeePriv priv)
		throws SQLException {
	
	List<TEmployeePriv> allPrivList = new ArrayList<TEmployeePriv>();
	List<TEmployeePriv> firstList = new ArrayList<TEmployeePriv>();
	List<TEmployeePriv> secondList = new ArrayList<TEmployeePriv>();
	
	String orderType = Converter.getCfgValue("manage_menu_type");//配置表,菜单排序类型
	
	/*if("215".equals(orderType)){
		priv.setMenuRank1("t1.menu_rank_1");
	}
	else if("216".equals(orderType)){
		priv.setMenuRank1("t1.menu_rank_2");
	}
	else if("217".equals(orderType)){
		priv.setMenuRank1("t1.menu_rank_3");
	}
	else{
		priv.setMenuRank1("t1.menu_rank_1");
	}*/
	priv.setMenuRank1("t1.menu_rank_1");//直接设置字符串(死的参数)
	priv.setEmployeeId(this.getUserId());//设置参数方式(活的参数)
	
	allPrivList = empDAO.queryMenu(priv);//根据权限查询当前商户的菜单
	
	/*1.加载一级菜单*/
	if( allPrivList.size()>0 ){
		for( TEmployeePriv firstPriv : allPrivList ){
			if(null==firstPriv.getMenuId1()){
				firstList.add(firstPriv);//一级菜单
			}
		}
	}
	
	/*2.加载二级菜单*/
	for( TEmployeePriv firstPriv : firstList ){
		for(TEmployeePriv secondPriv : allPrivList){
			if(null!=secondPriv.getMenuId1()&&
					firstPriv.getPrivNum().equals(secondPriv.getMenuId1())){
				secondList.add(secondPriv);
			}
		}
	}
	
	List<List<TEmployeePriv>> result = new ArrayList<List<TEmployeePriv>>();
	result.add(firstList);
	result.add(secondList);
	
	return result;
}