您的位置:首页 > 其它

mybatis使用resultMap实现一对一查询

2017-05-07 02:34 429 查看
在订单po类中 创建一个User的属性,然后利用resultMap将查询出来的与po进行自定义映射

订单Orders. java

public class Orders {
private int id;//订单号
private int user_id;//用户的id
private String order_number;//订单号

private User user;


Mapper.xml进行配置resultMap

<mapper namespace="com.mo.mapper.OrdersMapperCustom">

<!-- 定义订单信息及用户信息的resultMap -->
<resultMap type="orders" id="ordersUserResultMap">
<!--
id:订单的主键,或者是唯一的标示
result:是普通的字段
-->
<id column="id" property="id"/>
<result column="user_id" property="user_id"/>
<result column="order_number" property="order_number"/>

<!--
配置用户映射信息
将查询出来的数据 映射到orders中的user属性中
association:用于单个关系对象的映射
property:将关联信息映射到order的哪一个属性
javaType:映射属性的类型
-->
<association property="user" javaType="com.mo.pojo.User">
<!--
进行映射
id:关联的用户信息的唯一约束
result:是普通字段
column:代表表的字段
property:代表po类的属性
-->
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/>
</association>
</resultMap>

<!-- 使用resultMap实现订单查询,关联查询用户信息 -->
<select id="findOrderUserListResultMap" resultMap="ordersUserResultMap">
SELECT orders.*,USER.username,USER.address FROM orders,USER WHERE orders.user_id = USER.id
</select>

Mapper.java
public interface OrdersMapperCustom {
List<OrdersCustom> findOrderUserListResultMap();
}


单元测试
public class TestDao {

//这里需要创建sqlSessionFactory工厂,因为创建新的UserDaoImpl需要注入会话工厂
private SqlSessionFactory sqlSessionFactory;

@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}

@Test
public void test3(){
SqlSession sqlSession = sqlSessionFactory.openSession();
OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);
List<OrdersCustom> list = ordersMapperCustom.findOrderUserListResultMap();
System.out.println(list.size());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: