mybatis使用resultMap实现一对一查询

在订单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());
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值