ibatis学习记录(2)

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"> 今天主要对iBatis的各种SQL语句进行了一些测试,iBatis的query一共有三种形式,分别是queryForObject, queryForList, queryForMap

queryForObject返回的是一个一个单独的实例,queryForList返回的是一组实例,而queryForMap返回一个映射表

 

在使用这三个方法之前,首先需要在SqlMap文件中配置好相关的resultMap,这样才能将结果集顺利返回。也就是说,必须需要一个javaBean存在,然后是一个resultMap:

  1. <resultMap id="UserBeanMap" class="com.featheast.chap4.UserBean">
  2. #         <result property="id" column="id"/>
  3. #         <result property="uid" column="uid"/>
  4. #         <result property="pwd" column="pwd"/>
  5. #         <result property="email" column="email"/>
  6. #         <result property="name" column="name"/>
  7. #         <result property="qq" column="qq"/>
  8. #         <result property="year" column="year"/>
  9. #         <result property="month" column="month"/>
  10. #         <result property="day" column="day"/>
  11. </resultMap>
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

比如如上是一个UserBean的resultMap,它包含了这个bean中的所有的属性,并且对应到了数据库表中的列。

 

1).queryForObject:

代码看上去是很简单的,下面是按照ID取出唯一的一个user元素

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

如果你试图返回一个多行的值到Object中,程序就会报错Error: executeQueryForObject returned too many results

 

2).queryForList:

在前面的一篇文章中已经采用了queryForList来作为实验。其实看看第一部分的代码,需要改的地方其实就是把函数名改为queryForList,然后取出各个List就好了。道理是一样的。

 

3).queryForMap:

唯一需要改变的地方就是要讲resultMap中的class改换为java.util.HashMap,其余的都可以按照正常的方法向下进行,的确非常易懂。

 

2.insert:

相比较select的复杂而言,insert就简单的多了,几乎和jdbc中一样,直接套用上去就可以了。下面给出一个例子:


  1. <insert id="insertUser">        
  2.         INSERT INTO userinfo(
  3.             uid,pwd,email,name,qq,year,month,day
  4.         )VALUES(
  5.             #uid:VARCHAR#,#pwd:VARCHAR#,#email:VARCHAR#,#name:VARCHAR#,#qq:VARCHAR#,#year:VARCHAR#,#month:VARCHAR#,#day:VARCHAR#
  6.         )
  7. </insert>

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

以上是sql的map结果,是不是和JDBC一样呢。然后在JAVA中的调用:


  1. UserBean user=new UserBean();
  2. user.setDay("31111");
  3. user.setEmail("featheast@123.com111");
  4. user.setMonth("10111");
  5. user.setName("featheast111");
  6. user.setPwd("123456111");
  7. user.setQq("30003000111");
  8. user.setUid("featheast111");
  9. user.setYear("2008111");
  10. sqlMap.insert("insertUser",user);


rel="File-List" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

如果觉得每次都得在sqlmap中写得太多而繁琐的话可以用一个parametermap来代替


  1. <parameterMap class="com.featheast.chap4.UserBean" id="insertUserMap">      
  2.         <parameter property="uid" jdbcType="VARCHAR"/>
  3.         <parameter property="pwd" jdbcType="VARCHAR"/>
  4.         <parameter property="email" jdbcType="VARCHAR"/>
  5.         <parameter property="name" jdbcType="VARCHAR"/>
  6.         <parameter property="qq" jdbcType="VARCHAR"/>
  7.         <parameter property="year" jdbcType="VARCHAR"/>
  8.         <parameter property="month" jdbcType="VARCHAR"/>
  9.         <parameter property="day" jdbcType="VARCHAR"/>                      
  10. </parameterMap>
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CFEATHE%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

如果你的数据库中有自动增长列那么就把那一列在添加的语句中空出来就可以了。系统会自动补上的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ibatis 开发指南 ibatis Quick Start............................................................................................ 5 准备工作.......................................................................................................... 5 构建ibatis 基础代码.................................................................................... 5 ibatis 配置........................................................................................................... 11 ibatis 基础语义...................................................................................................... 16 XmlSqlMapClientBuilder................................................................... 16 SqlMapClient ........................................................................................... 16 SqlMapClient 基本操作示例.......................................................... 16 OR 映射........................................................................................................... 19 ibatis 高级特性...................................................................................................... 26 数据关联........................................................................................................ 26 一对多关联............................................................................................ 26 一对一关联............................................................................................ 28 延迟加载........................................................................................................ 30 动态映射........................................................................................................ 31 事务管理........................................................................................................ 35 基于JDBC 的事务管理机制................................................................ 35 基于JTA 的事务管理机制................................................................... 36 外部事务管理......................................................................................... 38 Cache .............................................................................................................. 39 MEMORY 类型Cache 与WeakReference ........................................ 40 LRU 型Cache ....................................................................................... 42 FIFO 型Cache ...................................................................................... 43 OSCache................................................................................................. 43

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值