谁能给我一个IBATIS多表关联的列子啊?
我自己写了一个。但是对一对一的关系,在查询的时候搞不懂怎么写?
最好给我一个全面的教案咯。嘿嘿。
我的QQ  124385410

解决方案 »

  1.   

    简单示例:
    public class ParentClass{
       private long pkId;
       
       private List<ChildClass> children = new ArrayList<ChildClass>();   ... getter & setters ...
    }public class ChildClass{
       private long pkId;   private ParentClass parentClass;   ... getter & setter ...
    }
    ParentClass的XML<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL MAP 2.0//EN" 
    "http://www.ibatis.com/dtd/sql-map-2.dtd"><sqlMap namespace="parent_class">
       <typeAlias alias="theParent" type="name.pack.model.ParentClass"/>
       <typeAlias alias="theChild" type="name.pack.model.ChildClass"/>   ...   <resultMap id="parentResult" class="theParent">
          <result property="pkId" column="pk_parentclass_id"/>
          <result property="children" column="pk_parentclass_id" select="parent_class.find_all_children"/>
       </resultMap>   <resultMap id="childResult" class="theChild">
          <result property="pkId" column="pk_childclass_id"/>
       </resultMap>   <select id="find_all_children" parameterClass="long" resultMap="childResult" cacheModel="..."><![CDATA[
          SELECT *
          FROM child_class
          WHERE my_parent_class = #pk_parentclass_id#
       ]]></select>
    </sqlMap>
    ChildClass的XML<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL MAP 2.0//EN" 
    "http://www.ibatis.com/dtd/sql-map-2.dtd"><sqlMap namespace="child_class">
       <typeAlias alias="theParent" type="name.pack.model.ParentClass"/>
       <typeAlias alias="theChild" type="name.pack.model.ChildClass"/>   ...   <resultMap id="childResult" class="theChild">
          <result property="pkId" column="pk_childclass_id"/>
          <result property="parentClass" column="my_parent_class" select="child_class.find_my_parent_class"/>
       </resultMap>   <resultMap id="parentResult" class="theParent">
          <result property="pkId" column="pk_parentclass_id"/>
       </resultMap>   <select id="find_my_parent_class" parameterClass="long" resultMap="parentResult" cacheModel="..."><![CDATA[
          SELECT *
          FROM parent_class
          WHERE pk_parentclass_id = #parentClassId#
       ]]></select>
    </sqlMap>
    done.
      

  2.   


    <select id="gcount" parameterClass="java.util.Map" resultClass="java.lang.String">
    select count(*) from $tableName1$ a,$tableName2$ b
    where a.id= b.id
    and b.rid=#rid#
    and b.gid=#gid#
    and b.fc is not  null
    </select>