`

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;
}
 
分享到:
评论

相关推荐

    ibatis中 $ 于 # 的 区别

    ### ibatis中 $ 与 # 的区别 在ibatis(现称为MyBatis)框架中,$ 和 # 是两种不同的动态SQL元素标记,用于处理参数传递的问题。它们各自有着独特的功能和应用场景,对于理解这两者的差异是十分重要的,因为这会...

    Ibatis资料ibatai sql map iBATIS使用$和#的一些理解

    在使用iBATIS(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...

    ibatis中输入输出各种类型的参数分析及#与$区别

    ### ibatis中输入输出各种类型的参数分析及#与$区别 #### iBatis简介与特点 iBatis作为一款轻量级的Java持久层框架,以其简洁、灵活的特点,在众多框架中占据一席之地。相较于知名的Hibernate框架,iBatis在实现上...

    myBatis和ibatis的区别

    ### myBatis与ibatis的区别 #### 一、概述 myBatis与ibatis是两款在Java领域中非常流行的持久层框架,它们均基于SQL映射机制,为开发者提供了便捷的方式来处理数据库操作。两者间的关系密切,ibatis是myBatis的...

    ibatis-in-action

    - **缓存机制**:介绍iBATIS中的缓存机制,包括一级缓存和二级缓存的区别及使用方法。 - **调优技巧**:提供一系列性能优化建议,如合理使用缓存、优化SQL语句等。 #### 3.2 数据访问对象 - **DAO模式**:阐述DAO...

    ibatis拼接字符串

    虽然 iBatis 在某些方面与 Hibernate 类似,但它们之间的主要区别在于 iBatis 提供了更细粒度的 SQL 控制能力,这使得 iBatis 在复杂查询或性能敏感的应用场景中更具优势。 ### 二、动态 SQL 的概念 在实际应用中...

    iBatis和Hibernate的区别

    ### iBatis与Hibernate的主要区别 #### 一、概述 iBatis与Hibernate都是Java领域内流行的ORM(Object-Relational Mapping,对象关系映射)框架,用于简化Java应用程序与数据库之间的交互。尽管它们有着相似的目标,...

    iBatis net版中文 1.6的

    - iBatis .NET简介:介绍iBatis .NET的基本概念、设计理念以及与传统数据访问方式的区别。 - 安装与配置:指导如何在.NET项目中引入iBatis .NET,以及如何设置配置文件。 - 数据库映射:讲解如何创建XML映射文件或...

    J2EE iBatis 概述

    #### 二、iBatis与Hibernate的区别 ##### 2.1 ORM实现方式 - **iBatis**:半自动化的ORM实现。iBatis关注于SQL与Java对象之间的映射,而不是像Hibernate那样自动生成SQL。 - **Hibernate**:全自动化ORM实现。...

    iBatis与数据库交互

    五、iBatis与MyBatis的区别与联系 MyBatis是iBatis的升级版,它继承了iBatis的所有优点,并做了很多改进,比如引入了注解支持、增强了对Spring的整合等。MyBatis更加现代化,社区活跃,持续维护,而iBatis则停止了...

    ibatis开发指南

    ibatis与Hibernate、Apache OJB等其他ORM框架的主要区别在于其半自动化的特点。对于需要精细控制SQL语句的应用场景,ibatis提供了更灵活的选择。例如,在以下情况下,ibatis可能是更好的选择: - 当数据库表结构...

    ibatis与hibernate的区别

    ### ibatis与hibernate的区别 #### 一、概述 在Java开发领域中,持久化技术是连接应用程序与数据库之间的重要桥梁。其中,ibatis(现称为MyBatis)和Hibernate作为两种主流的对象关系映射(Object Relational ...

    选用ibatis和hibernate的区别

    **选用Ibatis与Hibernate的区别**: 1. **灵活性**:Ibatis允许直接编写SQL,适合复杂的查询和性能优化。Hibernate则倾向于自动化,可能在复杂查询方面不够灵活。 2. **学习曲线**:Hibernate提供了全套的ORM解决...

    ibatis和hibernate的区别

    在Java开发中,ibatis和Hibernate都是常见的对象关系映射(ORM)框架,它们简化了数据库操作,将Java对象与数据库表之间的映射关系抽象出来,使得开发人员可以使用面向对象的方式处理数据。然而,两者在设计理念和...

    iBATIS缓存介绍

    ##### 2.3 iBATIS高速缓存和传统O/RM高速缓存的区别 iBATIS高速缓存相较于传统的对象关系映射(ORM)工具的缓存机制,更侧重于简单性和灵活性。例如,iBATIS允许开发者自由地控制缓存的配置,而传统ORM工具可能会有...

    ibatis2.rar

    iBATIS是一个优秀的Java持久层框架,它提供了一个SQL映射框架,使开发者能够将SQL语句直接写在配置文件中,与Java代码分离,从而实现了数据访问逻辑和业务逻辑的解耦。"ibatis2.rar"这个压缩包文件包含了关于iBATIS ...

    mysql,jdbc详解,与ibatis对比。批量查询,分页处理。

    ### MySQL、JDBC详解及与iBatis对比 #### 一、MySQL基本操作 MySQL作为一款广泛使用的开源关系型数据库管理系统,在IT行业中占有极其重要的地位。对于开发人员来说,掌握MySQL的基本操作至关重要。 ##### 1. 增删...

    最好的ibatis教程实例(内有注释)

    4. **参数映射与结果集映射**:Ibatis提供了强大的参数映射机制,如#{}和${}的区别,以及如何使用Map、POJO、自定义VO等方式传递参数。同时,它还支持自动映射结果集,也可以自定义映射规则。 5. **缓存机制**:...

Global site tag (gtag.js) - Google Analytics