«

ibatis一对多数据库如何实现

时间:2024-3-5 13:10     作者:韩俊     分类: Mysql


这篇文章主要介绍了ibatis一对多数据库如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ibatis一对多数据库如何实现文章都会有所收获,下面我们一起来看看吧。

iBatis的多表关联。
ibatis的表关联,和数据库语句无关,是在Java程序中,把若干语句的结果关联到一起。
这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便。这里用表lock和key为例,一个lock可以配多个key。
CREATETABLE lock(
     id int,
     lockName varchar
);

CREATETABLEkey(
     id int,
     lockId int,
     keyName varchar
);定义映射类
package zzcv.dao.domain;

publicclass Lock
{
    privateint id;
    private String lockName;
    private List<Key> keys = new ArrayList<Key>();
    
    publicvoid getId(){
        return..
         ...
        //省略
}

package zzcv.dao.domain;

publicclass Key
{
    privateint id;
private String keyName;
    private Lock lock;          ...
        //省略
}表关联通过配置文件的resultMap实现,不需要关联的查询仍可用resultClass
<sqlMap namespace="test">   
  <typeAlias alias="Key"="zzcv.dao.domain.Key"/>   
  <typeAlias alias="Lock"="zzcv.dao.domain.Lock"/>   
    
  <resultMap id="KeyResult"="Key">   
  <result property="id"="id"/>   
  <result property="keyName"="keyName"/>   
  <result property="lock"="lockId"="getLockById"/>   
  </resultMap>
  <!---->
    
  <resultMap id="LockResult"="Lock">   
  <result property="id"="id"/>   
  <result property="lockName"="lockName"/>   
  <result property="keys"="id"="getKeysByLockId"/>   
  </resultMap>
  <!---->
  
  <!---->
  
  <select id="selectAllkeys"="KeyResult">   
  <![CDATA[   
   select id,lockId,keyName from key
  ]]>   
  </select>   
    
  <select id="getLockById"="int"="Lock">   
  <![CDATA[   
   select id,lockName from lock where id = #value#   
  ]]>   
  </select>
  
  <select id="selectAllLocks"="LockResult">   
  <![CDATA[   
   select id,lockName from lock
  ]]>   
  </select>   
    
  <select id="getKeyByLockId"="int"="key">   
  <![CDATA[   
   select id,lockId,keyName from lock where lockId = #value#   
  ]]>   
  </select>
</sqlMap>   现在可以代码中使用了
     ...
     ..
    try{
         Reader reader ="mxd/dao/data/SqlMapConfig.xml");
         sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
         reader.close(); }
    catch(IOException e){
        thrownew"Something bad happened while building the SqlMapClient instance."+ e, e);}

     List locks=sqlMapper.queryForList("selectAllLocks");
    //取一个Lock对象。
=(Lock)locks.get(0);
    //从Lock对象取List<Key>。
=lock.getKeys();
    //示例结束,取到结果了,剩余的一个关联是取对象Lock,其余操作差不多,就不写出了。
     ...

标签: mysql

热门推荐