一、POJO
public class Customer {
private Long id;
private String name;
private String address;
private String postcode;
private String sex;
private List<Orders> orderlist = new ArrayList<Orders>();
private Long id;
private String name;
private String address;
private String postcode;
private String sex;
private List<Orders> orderlist = new ArrayList<Orders>();
public String toString() {
return "Customer{" +
"id=" + id +
", name='" + name + '\'' +
", address='" + address + '\'' +
", postcode='" + postcode + '\'' +
", sex='" + sex + '\'' +
", orderlist=" + orderlist.size() +
'}';
}
return "Customer{" +
"id=" + id +
", name='" + name + '\'' +
", address='" + address + '\'' +
", postcode='" + postcode + '\'' +
", sex='" + sex + '\'' +
", orderlist=" + orderlist.size() +
'}';
}
public class Orders {
private Long id;
private String code;
private Long customerId;
private Customer customer;
private Long id;
private String code;
private Long customerId;
private Customer customer;
public String toString() {
return "Orders{" +
"id=" + id +
", code='" + code + '\'' +
", customerId=" + customerId +
'}';
}
return "Orders{" +
"id=" + id +
", code='" + code + '\'' +
", customerId=" + customerId +
'}';
}
二、SqlMap
Customer.xml
<?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 namespace="customer">
<typeAlias alias="customer" type="com.lavasoft.ssi.domain.Customer"/>
<resultMap id="result_base" class="customer">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="address" column="address"/>
<result property="postcode" column="postcode"/>
<result property="sex" column="sex"/>
</resultMap>
<resultMap id="result" class="customer" extends="result_base">
<result property="orderlist" column="id" select="orders.findByCustomerId"/>
</resultMap>
<insert id="insert" parameterClass="customer">
insert into customer(address,postcode,sex,name) values(#address#,#postcode#,#sex#,#name#)
<selectKey keyProperty="id" resultClass="long">
select LAST_INSERT_ID()
</selectKey>
</insert>
<select id="getById" parameterClass="long" resultMap="result_base">
select * from customer where id = #value#
</select>
<select id="getWithCashById" parameterClass="long" resultMap="result">
select * from customer where id = #value#
</select>
<select id="getWithCashByIdInnerjoin" parameterClass="long" resultClass="customer" resultMap="result">
select c.* from customer c inner join orders o on c.id=o.customerId
</select>
</sqlMap>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="customer">
<typeAlias alias="customer" type="com.lavasoft.ssi.domain.Customer"/>
<resultMap id="result_base" class="customer">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="address" column="address"/>
<result property="postcode" column="postcode"/>
<result property="sex" column="sex"/>
</resultMap>
<resultMap id="result" class="customer" extends="result_base">
<result property="orderlist" column="id" select="orders.findByCustomerId"/>
</resultMap>
<insert id="insert" parameterClass="customer">
insert into customer(address,postcode,sex,name) values(#address#,#postcode#,#sex#,#name#)
<selectKey keyProperty="id" resultClass="long">
select LAST_INSERT_ID()
</selectKey>
</insert>
<select id="getById" parameterClass="long" resultMap="result_base">
select * from customer where id = #value#
</select>
<select id="getWithCashById" parameterClass="long" resultMap="result">
select * from customer where id = #value#
</select>
<select id="getWithCashByIdInnerjoin" parameterClass="long" resultClass="customer" resultMap="result">
select c.* from customer c inner join orders o on c.id=o.customerId
</select>
</sqlMap>
Orders.xml
<?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 namespace="orders">
<typeAlias alias="orders" type="com.lavasoft.ssi.domain.Orders"/>
<resultMap id="result_base" class="orders">
<result property="id" column="id"/>
<result property="code" column="code"/>
<result property="customerId" column="customerId"/>
</resultMap>
<resultMap id="result" class="orders" extends="result_base">
<result property="customer" column="customerId" select="customer.getById"/>
</resultMap>
<insert id="insert" parameterClass="orders">
insert into orders(id,code,customerId) values(#id#,#code#,#customerId#)
<selectKey keyProperty="id" resultClass="long">
select LAST_INSERT_ID()
</selectKey>
</insert>
<select id="findByCustomerId" resultMap="result_base" parameterClass="long">
select * from orders where customerId = #value#
</select>
<select id="getById" parameterClass="long" resultMap="result_base">
select * from orders where id = #value#
</select>
<select id="getByIdWithCash" resultMap="result" resultClass="orders" parameterClass="long">
select * from orders where id = #value#
</select>
</sqlMap>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="orders">
<typeAlias alias="orders" type="com.lavasoft.ssi.domain.Orders"/>
<resultMap id="result_base" class="orders">
<result property="id" column="id"/>
<result property="code" column="code"/>
<result property="customerId" column="customerId"/>
</resultMap>
<resultMap id="result" class="orders" extends="result_base">
<result property="customer" column="customerId" select="customer.getById"/>
</resultMap>
<insert id="insert" parameterClass="orders">
insert into orders(id,code,customerId) values(#id#,#code#,#customerId#)
<selectKey keyProperty="id" resultClass="long">
select LAST_INSERT_ID()
</selectKey>
</insert>
<select id="findByCustomerId" resultMap="result_base" parameterClass="long">
select * from orders where customerId = #value#
</select>
<select id="getById" parameterClass="long" resultMap="result_base">
select * from orders where id = #value#
</select>
<select id="getByIdWithCash" resultMap="result" resultClass="orders" parameterClass="long">
select * from orders where id = #value#
</select>
</sqlMap>