您的位置:首页 > 编程语言 > Java开发

JavaEE_Mybatis_SpringMVC_Mybatis_lesson11_一对一关联映射(ResultMap/ResultType)

2015-12-02 19:10 681 查看
项目代码

http://pan.baidu.com/s/1c01BLvi

下面演示Mybatis的一对一关联映射,     ResultType 与ResultMap 两种形式

整体的配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 加载属性文件 -->
<properties resource="db.properties"></properties>

<!--
<settings></settings>
-->
<typeAliases>
<!--
<typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
-->
<!-- 批量定义别名 -->
<package name="cn.itcast.mybatis.po"/>
</typeAliases>

<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>

<mappers>
<mapper resource="sqlmap/User.xml"/>
<!--
<mapper resource="mapper/UserMapper.xml"/>
-->
<!--
<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>
-->
<package name="cn.itcast.mybatis.mapper"/>

</mappers>
</configuration>


Mybatis的一对一关联映射ResultType形式

Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="cn.itcast.mybatis.mapper.UserCustomMapper">
<select id="findOrderUser" resultType="OrdersCustom">
SELECT o.*, u.username, u.sex, u.address
FROM user AS u, orders AS o
WHERE o.user_id = u.id
</select>
</mapper>


Mapper.java

package cn.itcast.mybatis.mapper;

import java.util.List;

import cn.itcast.mybatis.po.Orders;
import cn.itcast.mybatis.po.OrdersCustom;

public interface UserCustomMapper {
// 根据订单查询用户信息
// 主表:Orders
// 从表:User
List<OrdersCustom> findOrderUser() throws Exception;

// 利用ResultMap进行关联映射
List<Orders> findOrderUserResultMap() throws Exception;
}


UserCustom.java(利用扩展类)

package cn.itcast.mybatis.po;

public class OrdersCustom extends Orders {
/*
* SELECT o.*, u.username, u.sex, u.address FROM user AS u, orders AS o
* WHERE o.user_id = u.id
*/
private String username;
private String sex;
private String address;

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

@Override
public String toString() {
return "OrdersCustom [username=" + username + ", sex=" + sex
+ ", address=" + address + ", toString()=" + super.toString()
+ "]";
}

}
Orders.java

package cn.itcast.mybatis.po;

import java.util.Date;
import java.util.List;

public class Orders {
private Integer id;

private Integer userId;

private String number;

private Date createtime;

private String note;

//用户信息
private User user;

//订单明细
private List<Orderdetail> orderdetails;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public Integer getUserId() {
return userId;
}

public void setUserId(Integer userId) {
this.userId = userId;
}

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number == null ? null : number.trim();
}

public Date getCreatetime() {
return createtime;
}

public void setCreatetime(Date createtime) {
this.createtime = createtime;
}

public String getNote() {
return note;
}

public void setNote(String note) {
this.note = note == null ? null : note.trim();
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public List<Orderdetail> getOrderdetails() {
return orderdetails;
}

public void setOrderdetails(List<Orderdetail> orderdetails) {
this.orderdetails = orderdetails;
}

@Override
public String toString() {
return "Orders [id=" + id + ", userId=" + userId + ", number=" + number
+ ", createtime=" + createtime + ", note=" + note + ", user="
+ user + ", orderdetails=" + orderdetails + "]";
}

}


Mybatis的一对一关联映射ResultMap形式

Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="cn.itcast.mybatis.mapper.UserCustomMapper">

<resultMap type="Orders" id="OrdersUserResultMap">
<id column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>

<!-- 配置映射的关联的用户信息 -->
<!-- association: 用于映射关联查询单个对象的信息 -->
<!-- property: 要将关联查询用户信息映射到Orders中的那个属性 -->
<association property="user" javaType="User">
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
</association>
</resultMap>
<select id="findOrderUserResultMap" resultMap="OrdersUserResultMap">
SELECT o.*, u.username, u.sex, u.address
FROM user AS u, orders AS o
WHERE o.user_id = u.id
</select>
</mapper>


Mapper.java

package cn.itcast.mybatis.mapper;

import java.util.List;

import cn.itcast.mybatis.po.Orders;
import cn.itcast.mybatis.po.OrdersCustom;

public interface UserCustomMapper {
// 根据订单查询用户信息
// 主表:Orders
// 从表:User
List<OrdersCustom> findOrderUser() throws Exception;

// 利用ResultMap进行关联映射
List<Orders> findOrderUserResultMap() throws Exception;
}


Orders.java

package cn.itcast.mybatis.po;

import java.util.Date;
import java.util.List;

public class Orders {
private Integer id;

private Integer userId;

private String number;

private Date createtime;

private String note;

//用户信息
private User user;

//订单明细
private List<Orderdetail> orderdetails;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public Integer getUserId() {
return userId;
}

public void setUserId(Integer userId) {
this.userId = userId;
}

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number == null ? null : number.trim();
}

public Date getCreatetime() {
return createtime;
}

public void setCreatetime(Date createtime) {
this.createtime = createtime;
}

public String getNote() {
return note;
}

public void setNote(String note) {
this.note = note == null ? null : note.trim();
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public List<Orderdetail> getOrderdetails() {
return orderdetails;
}

public void setOrderdetails(List<Orderdetail> orderdetails) {
this.orderdetails = orderdetails;
}

@Override
public String toString() {
return "Orders [id=" + id + ", userId=" + userId + ", number=" + number
+ ", createtime=" + createtime + ", note=" + note + ", user="
+ user + ", orderdetails=" + orderdetails + "]";
}

}

测试类

package cn.itcast.mybatis.mapper;

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import cn.itcast.mybatis.po.Orders;
import cn.itcast.mybatis.po.OrdersCustom;

public class UserCustomMapperTest {

private SqlSessionFactory sqlSessionFactory;

@Before
public void setUp() throws Exception {
String resource = null;
InputStream inputStream = null;
try {
// 读取Mybatis配置信息
resource = "SqlMapConfig.xml";
inputStream = Resources.getResourceAsStream(resource);

// 根据Mybatis配置信息,创建会话工厂
this.sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}

@Test
public void testFindOrderUser() {
SqlSession sqlSession = null;
try {
sqlSession = sqlSessionFactory.openSession();
UserCustomMapper userCustomMapper = sqlSession
.getMapper(UserCustomMapper.class);
List<OrdersCustom> ordersCustomsList = userCustomMapper
.findOrderUser();
for (OrdersCustom tmp : ordersCustomsList) {
System.out.println(tmp);
}
} catch (Exception e) {
sqlSession.close();
}
}

@Test
public void testFindOrderUserResultMap() {
SqlSession sqlSession = null;
try {
sqlSession = sqlSessionFactory.openSession();
UserCustomMapper userCustomMapper = sqlSession
.getMapper(UserCustomMapper.class);
List<Orders> list = userCustomMapper.findOrderUserResultMap();
for (Orders tmp : list) {
System.out.println(tmp);
}
} catch (Exception e) {
sqlSession.close();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: