ibatis级联解决登录系统问题

开发 后端
我们在登录系统中经常遇到一对多和多对一的问题,这个时候我们就需要了解ibatis 级联的处理了。我们这就来看看这个问题是如何解决的。

最近在搞登录系统,可是原先历史上完成的开发并没有引用hibernate,而是加入了ibatis ,这方面我以前未接触过,前几天需要完成的逻辑还比较简单,但是今天做到注册缓解的时候涉及到密码提示问题,而原先的登录系统是将question表与user表分开,这就涉及到了ibatis 级联的处理了。为了能够使用user.getQuestion,我们需要做一些配置:

在user.ibatis.xml 中设置

  1. <sqlMap namespace="User"> 
  2.     <typeAlias alias="user" type="com.gh.passport.domain.User" /> 
  3.     <typeAlias alias="question" type="com.gh.passport.domain.Question" /> 
  4.       
  5.     <resultMap id="user_result" class="com.gh.passport.domain.User"> 
  6.         <result property="id" column="ID" /> 
  7.         <result property="name" column="NAME" /> 
  8.         <result property="password" column="PASSWORD" /> 
  9.         <result property="answer" column="ANSWER" /> 
  10.         <result property="email" column="EMAIL" /> 
  11.         <result property="token" column="TOKEN" /> 
  12.         <result property="userQuestionId" column="USERQUESTION_ID" select="getQuestionById1" /> 
  13.     resultMap> 
  14.  
  15.  
  16.     <select id="getUser" parameterClass="String" resultMap="user_result"> 
  17.         SELECT   
  18.             ID        as id,   
  19.             NAME      as name,   
  20.             PASSWORD  as password,  
  21.             USERQUESTION_ID  as userQuestion_Id,  
  22.             ANSWER   as answer,  
  23.            
  24.         FROM USERS  
  25.         WHERE trim(lower(NAME)) = trim(lower(#name#))  
  26.     select> 
  27.  
  28. <select id="getQuestionById1" parameterClass="Long"  resultClass="question"> 
  29.         SELECT USERQUESTION_ID as id,   
  30.         QUESTION as question   
  31.         FROM USERQUESTION  
  32.         where USERQUESTION_ID = #id#  
  33.     select> 
  34. sqlmap> 

user_result        为result_map供select id="getUser" 使用user_result 集合所需要的数据从getUser 里拿。
其实应该这么说,在getUser查完数据库将数据映射成user_result 格式,而user_result的column 即为getUser as 后面的部分,名称需一致 而大小写无所谓,好像ibatis级联对大小写不敏感。

测试:
public void testXXXXXXXXX() throws Exception {
        String userName = "x@x.com";
        User user = users.findByName(userName);
        System.out.println(user.getUserQuestion().getQuestion());
    }
以此类推,我们就可以通过ibatis级联来解决登录系统中的一对多和多对一的问题了。

【编辑推荐】

  1. 实例说明ibatis动态查询
  2. ibatis标签详解
  3. ibatis插件的安装方式
  4. ibatis下加入c3p0连接池的方法
  5. ibatis也能用proxool连接池
责任编辑:桑丘 来源: 夏天的树阴blog
相关推荐

2011-03-15 13:30:27

IBatis.netMySQL

2010-07-21 15:04:46

2011-04-29 14:00:23

MSN故障

2009-07-16 13:03:05

ibatis resu

2009-07-24 16:42:46

iBatis框架做ba

2009-06-17 10:47:36

Hibernate级联级联删除

2011-07-11 09:54:16

DAC登录触发器

2010-08-26 09:51:56

级联端口

2010-04-09 16:45:42

Unix操作系统

2021-05-10 17:40:12

Sqlplus登录分析

2010-05-20 16:42:56

2021-11-26 22:25:48

QQQQ音乐移动应用

2011-09-02 15:01:29

ubuntu

2011-08-03 18:50:28

Win7系统

2010-01-08 14:45:26

Ubuntu VMwa

2010-04-28 18:01:15

Unix系统

2010-04-14 14:55:29

Unix操作系统

2009-08-14 10:26:27

ibatis多数据源

2009-07-16 09:56:32

什么是iBATIS

2009-07-15 15:47:49

iBATIS是什么
点赞
收藏

51CTO技术栈公众号