个人感觉ibatis框架就是简化了数据和BEAN的映射过程,导包,配置网上很多例子,就不多说了。这里主要通俗说明一下一对多的实现。
首先,数据库中有三个表,用户表,用户对应类型表,用户类型说明表。就是用户表中除基本信息外还有用户类型字段,用户类型在用户对应类型表中有多条数据,也就是一个用户可能有多种类型。而各个类型的具体信息,如类型名称,存在另一个表用户类型说明表中。这是典型的一对多关系。
具体的一对多实现:
1 建用户类
public class User extends BaseObject {
private Long id;
private String firstName;
private String lastName;
private Date birthday;
private List userTypeList;
set,get方法略
}
2 建用户类型类
public class UserType extends BaseObject {
private Long userId;
private Long userTypeId;
private String userTypeName;
set,get方法略
}
3 UserSQL.xml配置
<sqlMap namespace="UserSQL">
<resultMap id="get-user-result" class="org.appfuse.model.User">
<result property="id" column="id"/>
<result property="firstName" column="firstName"/>
<result property="lastName" column="lastName"/>
<result property="birthday" column="birthday"/>
<result property="userTypeList" column="id" select="getUserTypeByUserId"/>
</resultMap>
<select id="getUsersType" resultMap="get-user-result">
select id, first_name as firstName, last_name as lastName,birthday
from app_user;
</select>
<select id="getUserTypeByUserId" parameterClass="java.lang.Long" resultClass="org.appfuse.model.UserType">
select user_id as userId, user_type_id as userTypeId, (select user_type_name
from user_type_detail d where d.user_type_id = t.user_type_id) as userTypeName from user_type t where user_id = #id#;
</select>
</sqlMap>