当前位置:编程学习 > JAVA >>

高分求ibatis级联查询

之前没接触过ibatis,所以麻烦诸位老鸟能否给个如下的实际代码范例:

user表: int id,int address_id,String name
address表: int id, String addressName

user表中的address_id关联到address的id

请问beans该如何写,sqlmap.xml中应该如何写,感谢~ --------------------编程问答-------------------- 好多分啊。 --------------------编程问答-------------------- 直接让我写出来很困难,但可以借助工具。下一个eclipse插件——Abator。专门生成ibatis相关的代码和配置文件。帮你搞定数据库层。我们公司项目就采用了这个。高效! --------------------编程问答-------------------- --------------------编程问答-------------------- ibatis就是直接写sql语句的,对于多表的,最好不要用ibatis的在一个属性上去做子查询,就是你所说的在sqlmap.xml中进行配置,如下:

    <resultMap id="xx" class="yy">  
        <result property="address" column="address" select="address.select" />  
    </resultMap>
    <select id="address.select"></select>  

这样做会有性能问题,直接用sql做表连接最好,至于beans可有可无,用Map就可
select * from user a,address b where a.address_id=b.id
--------------------编程问答-------------------- 我给你找个例子 等下哈。 --------------------编程问答-------------------- 首先建立基本类,既然你想取User的address信息。那么User类应该有address属性。

package ibatis.model;

import java.io.*;
import java.util.*;

public class User implements Serializable{

private Integer id;
private String name;
private List addresses;
public List getAddresses() {
return addresses;
}
public void setAddresses(List addresses) {
this.addresses = addresses;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}

--------------------编程问答-------------------- 如果一个人有多个地址,也就是一对多,那么这样建立配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
 PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
 "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
    <typeAlias alias="User" type="ibatis.model.User"/>
    <resultMap id="get-user-result" class="user">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="addresses" column="address_id"
         select="getAddressById"/>
    </resultMap>
    <select id="getUsers"
     
     resultMap="get-user-result">
        <![CDATA[
select
id,
name
from t_user

]]>
    </select>
    <select id="getAddressById"
     parameterClass="int"
     resultClass="java.lang.String">
        <![CDATA[
select
addressName
from t_address
where id = #id#
]]>
    </select>
</sqlMap>

--------------------编程问答-------------------- 学习了。 --------------------编程问答-------------------- 给你查了半天,到现在也不结贴,不厚道哦。 --------------------编程问答-------------------- --------------------编程问答-------------------- 6-7就是答案,给他分吧!这个就是所谓的ibatis延迟加载!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,