在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;
}