1: ibatis配置文件
<typeAlias alias="webUser" type="com.model.WebUser" />
<resultMap id="get-user-result" class="webUser">
<result property="uid" column="UID" />
<result property="uno" column="UNo" />
<result property="uname" column="UName" />
<result property="pswd" column="Pswd" />
<result property="sidType" column="SID" />
<result property="dn" column="DN" />
<result property="role" column="RoleId" select="wbst_webRole.getRoleById"/>
<result property="brNo" column="SysAuxCode" />
<result property="stateType" column="State" />
// 看 还可以用这种方式赋值呢哦
<result property="member" column="CltNo" select="wbst_member.getMemberByNo"/>
<result property="userActionType" column="Action" />
<result property="firstEnterType" column="FirstEnter" />
<result property="webContentUser" column="UID" select="wbst_webContent.getLastContentByUserSource" />
<result property="activeType" column="Active" />
<result property="rejectType" column="{sourceId=UID,action=action}" select="wbst_webContent.getRejectByUser"/>
</resultMap>
<select id="getUserById" parameterClass="int" resultMap="get-user-result">
select * from wfuser where "UID"=#value#
</select>
2: webUser类
public class WebUser implements Serializable {
protected Integer uid;
protected String uno;
protected String uname;
protected String pswd;
protected UserState sid;
protected String dn;
protected WebRole role;
protected String brNo;
protected OpenState state;
protected Member member;
protected UserAction userAction;
protected FirstEnter firstEnter;
protected WebContentUser webContentUser;
protected Activated active;
private Reject reject;
public WebUser(){
}
public Reject getReject() {
return reject;
}
public void setReject(Reject reject) {
this.reject = reject;
}
public void setRejectType(Integer reject) {
if(reject == null)
return ;
this.reject = Reject.getType(reject);
}
public WebContentUser getWebContentUser() {
return webContentUser;
}
public void setWebContentUser(WebContentUser webContentUser) {
this.webContentUser = webContentUser;
}
public Activated getActive() {
return active;
}
public void setActive(Activated active) {
this.active = active;
}
// 通过如下这种方式未active类赋值,active为枚举类在下面会有介绍
public void setActiveType(Integer active) {
if(active == null)
return;
this.active = Activated.getType(active);
}
public OpenState getState() {
return state;
}
public void setState(OpenState state) {
this.state = state;
}
public void setStateType(Integer state) {
if(state == null)
return;
this.state = OpenState.getType(state);
}
public FirstEnter getFirstEnter() {
return firstEnter;
}
public void setFirstEnter(FirstEnter firstEnter) {
this.firstEnter = firstEnter;
}
public void setFirstEnterType(Integer firstEnter) {
if(firstEnter == null)
return;
this.firstEnter = FirstEnter.getType(firstEnter);
}
public UserAction getUserAction() {
return userAction;
}
public void setUserAction(UserAction userAction) {
this.userAction = userAction;
}
public void setUserActionType(Integer userAction) {
if(userAction == null)
return ;
this.userAction = UserAction.getType(userAction);
}
public Member getMember() {
return member;
}
public void setMember(Member member) {
this.member = member;
}
public String getPswd() {
return pswd;
}
public void setPswd(String pswd) {
this.pswd = pswd;
}
public UserState getSid() {
return sid;
}
public void setSid(UserState sid) {
this.sid = sid;
}
public void setSidType(Integer sid){
if(sid == null)
return;
this.sid=UserState.getType(sid);
}
public String getBrNo() {
return brNo;
}
public void setBrNo(String brNo) {
this.brNo = brNo;
}
public String getDn() {
return dn;
}
public void setDn(String dn) {
this.dn = dn;
}
public WebRole getRole() {
return role;
}
public void setRole(WebRole role) {
this.role = role;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUno() {
return uno;
}
public void setUno(String uno) {
this.uno = uno;
}
public String toString(){
return "{UID=" + getUid() + " : UNo=" + getUno() + "\n\r" + " : UName="
+ getUname() + "}\n\r" + getRole() + "\n" + getMember()
+ "\n\r" + getSid();
}
}
3: 在类加载时静态变量被加载,并初始化map的值了。
public class Activated extends EnumerateType{
private static TreeMap map = new TreeMap();
private Activated(int code, String text) {
super(String.valueOf(code), text);
map.put(getCode(), this);
}
/**
* 根据类型号返回类型对象。
*/
public static Activated getType(Integer code) {
return (Activated) map.get(String.valueOf(code));
}
public static Activated getType(int code) {
return (Activated) map.get(String.valueOf(code));
}
/**
* 取全部类型列表
*/
public static Activated[] getTypeList() {
Activated[] list = new Activated[map.size()];
map.values().toArray(list);
return list;
}
/** 0:未激活 */
public static Activated USER_NONACTIVATED = new Activated(0, "未激活");
/** 1:已激活 */
public static Activated USER_ACTIVATED = new Activated(1, "已激活");
}
4:所有枚举类的父类
public class EnumerateType
/* */ implements Serializable, Comparable, OptionObject
/* */ {
/* */ private String code;
/* */ private String text;
/* */
/* */ protected EnumerateType(String code, String text)
/* */ {
/* 24 */ this.code = code;
/* 25 */ this.text = text;
/* */ }
/* */
/* */ public String getCode()
/* */ {
/* 33 */ return this.code;
/* */ }
/* */
/* */ public String getValue()
/* */ {
/* 41 */ return this.code;
/* */ }
/* */
/* */ public String getText()
/* */ {
/* 49 */ return this.text;
/* */ }
/* */
/* */ public int compareTo(Object o)
/* */ {
/* 58 */ EnumerateType type = (EnumerateType)o;
/* 59 */ return getCode().compareTo(type.getCode());
/* */ }
/* */
/* */ public boolean equals(Object o)
/* */ {
/* 68 */ if (o == this) {
/* 69 */ return true;
/* */ }
/* 71 */ if (o instanceof EnumerateType) {
/* 72 */ EnumerateType type = (EnumerateType)o;
/* 73 */ return (type.getCode() == getCode());
/* */ }
/* 75 */ return false;
/* */ }
/* */
/* */ public int hashCode()
/* */ {
/* 84 */ return this.code.hashCode();
/* */ }
/* */
/* */ public String toString()
/* */ {
/* 92 */ return "code=" + this.code + " , " + "text=" + this.text;
/* */ }
/* */ }
分享到:
相关推荐
标题 "ibatis 的关系映射" 指涉的是在使用 iBatis 框架时,如何处理数据库中的关联关系,包括一对一、一对多和多对多的关系映射。iBatis 是一个轻量级的 Java ORM(对象关系映射)框架,它允许开发者将 SQL 查询直接...
在这些元素中,你可以通过来定义输入参数,通过<resultMap>来定义结果集的映射规则。 在映射文件中,iBATIS提供了强大的映射机制,比如自动类型转换、结果集嵌套处理、自动生成主键等。例如,和可以将查询结果的...
首先,我们来看Mybatis或iBatis在XML配置文件中的多表映射。以学生、班级和班主任为例,学生与班级是一对多关系,班级与班主任是一对一关系。在`classInfo-mapper.xml`配置文件中,我们定义了三个`resultMap`:`...
在iBATIS的映射文件中,我们需要定义一个`<resultMap>`来处理这种继承关系,并使用`<discriminator>`元素来根据`discriminator`列的值决定实例化哪个子类。 `<resultMap>`配置如下: ```xml <resultMap id=...
在iBATIS的映射文件中,你可以使用`<resultMap>`标签定义一对一的关系。例如,如果员工表(Employee)和部门表(Department)是一对一关系,可以这样配置: ```xml <resultMap id="employeeResult" type=...
在`ibatis`的映射文件中,你可以定义一个`resultMap`来表示父对象,然后通过`collection`元素来声明一对多的关系。`collection`元素的` ofType`属性指定子对象的类型,`property`属性则对应父对象中的集合属性名。 ...
在`User`类的映射文件中,我们可以定义一个`resultMap`,它包含了`User`的基本属性以及一个嵌套的`orderList`,表示用户的所有订单: ```xml <resultMap id="userResultMap" type="User"> <!-- 其他User属性映射...
- `<resultMap>`:定义结果集映射,将数据库查询结果映射到Java对象。 通过这种方式,iBatis可以将数据库操作与业务逻辑解耦,使得代码更易于维护和扩展。 总结来说,iBatis的配置文件`sqlMapConfig.xml`是整个...
2. **结果集映射**:iBATIS 使用 `<resultMap>` 元素来定义结果集的映射规则,将数据库查询结果中的列与 Java 对象的属性对应起来。例如: ```xml <resultMap id="userResultMap" class="User"> </...
- `<resultMap>`:定义查询结果如何映射到Java对象。 - `<parameterMap>`:定义SQL语句中的参数。 理解并熟练掌握`sqlMapConfig.xml`和映射文件的配置,是使用iBATIS进行数据访问的关键。通过合理配置,可以实现...
在映射文件中,我们可以定义`<resultMap>`来映射对象属性和字段,使用`<id>`、`<result>`等元素来指定主键和普通字段。此外,还可以使用`<select>`、`<insert>`、`<update>`和`<delete>`标签来定义SQL语句,它们可以...
ResultMapping是ResultMap中的一个属性,用于指定结果映射。在IBatis中,ResultMapping的名称需要加上namespace,例如:<resultMap id="xxxMap" class="xxx"> <result property="abc" resultMap="ns.yyyMap"/> </...
iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件中,极大地提高了数据库操作的灵活性和便捷性。以下是对iBatis核心知识点的详细解析: 1. **简介**: iBatis是由Apache软件基金会维护的开源...
5. **结果映射(ResultMap)**:Ibatis的ResultMap用于处理复杂的查询结果,它可以映射多对一、一对多的关系,或者处理自定义类型转换等复杂情况。 6. **动态SQL**:Ibatis的动态SQL功能允许在XML配置文件中编写...
在一对多映射中,ResultMap 需要包含一个嵌套的结果集,表示一个主对象对应多个子对象的关系。 3. **association** 标签:这个标签用于表示一对一的关联,但也可以在一对多关系中使用。在一对多映射中,association...
此外,还有`<resultMap>`用于定义结果集映射,`<parameterMap>`用于参数对象的映射等,这些元素都是通过`sql-map-2.dtd`定义的。 其次,`sql-map-config-2.dtd`则是Ibatis的SQL映射配置文件的DTD,它定义了整个...
3. 结果集映射:iBATIS提供了强大的结果集映射机制,通过`<resultMap>`元素可以指定字段与Java对象属性之间的对应关系,即使数据库表结构发生变化,也能保持Java对象结构的稳定。 4. 动态SQL:iBATIS的动态SQL功能...
Ibatis 提供了多种映射方式,包括自动映射(基于字段名匹配)、手动映射(通过 `resultMap` 标签)和自定义映射器(通过 `javaTypeHandler`)。此外,还可以使用 `collection` 标签处理一对多的关系映射。 **七、...