设为首页 加入收藏

TOP

ibatis实战之OR映射
2015-07-24 06:13:50 来源: 作者: 【 】 浏览:25
Tags:ibatis 实战 映射

相对Hibernate等ORM实现而言,ibatis的映射配置更为简洁直接,下面是一个典型的配置文件。

    


  
	
   
	
   
	
	
    
     
     
     
   

	
   
	
   
	
	
   
     insert into user values(#id#,#name#,#age#) 
   

	
   
     update user set name = #name# where id = #id# 
   


  
可以看到,映射文件主要分为两个部分:模块配置和Statement配置

一、模块配置包括:

typeAlias节点:

定义了本映射文件中的别名,以避免过长变量值的反复书写,此例中通过typeAlias节点为类"com.itmyhome.User"定义了一个别

名"user",这样在本配置文件的其他部分,需要引用"com.itmyhome.User"类时,只需以其别名替代即可。

cacheModel节点

定义了本映射文件中使用的Cache机制

  
	
    
	
   
	
   

  
这里声明了一个名为"userCache"的cacheModel,之后可以在Statement声明中对其进行引用


	
		select * from user where id = #id# 
	



  
   
	    insert into user values(#id#,#name#,#age#)

  


  
   
	update  user set name = #name# where id = #id#

  


  
   
	delete user where id = #id#

  
参数 描述
parameterClass 参数类.指定了参数的完整类名(包括包路径).
可通过别名避免每次重复书写冗长的类名.
resultClass 结果类.指定结果类型的完整类名(包括包路径)
可通过别名避免每次重复书写冗长的类名.
parameterMap 参数映射,需结合parameterMap节点对映射关系加以定义.
对于存储过程之外的statement而言,建议使用
parameterClass作为参数配置方式,一方面避免了
参数映射配置工,另一方面其性能表现也更加出色。
resultMap 结果映射,需结合resultMap节点对映射关系加以定义。
cacheModel statement对应的Cache模块。
对于参数定义而言,尽量使用parameterClass,即直接将POJO作为statement的调用参数,

这样在SQL中可以直接将POJO的属性作为参数加以设定,如:

  
   
	alter table user set name = #name# where id = #id#

  
这里将com.itmyhome.User类设定为updateUser的参数之后,我们即可在SQL中通过#name#

对POJO的属性进行引用。如下:

set name = #name# where id = #id#
运行期,ibatis将通过调用User对象的getName,getId方法获得相应的参数值,并将其作为SQL的参数。

如果parameterClass中设定的是jdk的中的简单对象类型,如String、Integer,ibatis会直接将其作为SQL中的参数值。

我们也可以将包含了参数数据的Map对象传递给Statement如:

  
   
	update  user set name = #name# where id = #id#

  

Map
  
    map = new HashMap
   
    (); map.put("id", "1"); map.put("name", "hello"); sqlMap.update("updateUser",map);
   
  
这里传入的参数就是一个Map对象,ibatis将以key "id"、"name"从中提取对应的参数值

在SQL中设定参数名时,可以同时指定参数类型,如:

update  user set name = #name:VARCHAR# where id = #id:NUMBERIC#



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇LeetCode:Path Sum 下一篇Swift中利用单例管理FMDB数据库

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: