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