MyBatis多对一,一对多关联映射

PersonBean.java

	private int pId;
	private String pName;
	private String pAddress;
	private String pTel;
	/** 订单    一对多**/
	private List<OrdersBean> orders;


OrderBean.java

	private int oId;
	private String oNumber;
	private double oPrice;
	/** 用户  多对一 **/
	private PersonBean person;


PersonBean.xml

<mapper namespace="com.pyy.bean.PersonBean">
	<resultMap type="personBean" id="personMap">
		<id column="pid" property="pId" />
		<!-- column:数据库中的列名,property:类中的属性名 -->
		<result column="pname" property="pName" />
		<result column="paddress" property="pAddress" />
		<result column="ptel" property="pTel" />
		<!-- 一对多 property指的是PersonBean中的属性 ofType:集合中的类型 -->
		<collection property="orders" ofType="OrdersBean">
			<id column="oid" property="oId" />
			<result column="onumber" property="oNumber" />
			<result column="oprice" property="oPrice" />
		</collection>
	</resultMap>
	<!--parameterType:输入参数类型, resultMap 与前面定义的resultMap一致 -->
	<select id="selectPersonById" parameterType="int" resultMap="personMap">
		select p.*,o.* from person p,orders o where p.pid=o.pid and p.pid=#{p}
	</select>
</mapper>


OrderBean.xml

<mapper namespace="com.pyy.bean.OrdersBean">
	<resultMap type="OrdersBean" id="ordersMap">
		<id column="oid" property="oId" />
		<result column="onumber" property="oNumber" />
		<result column="oprice" property="oPrice" />
		<!-- 多对一关联映射 -->
		<!-- property:类中的属性名,javaType:属性名所对应的类型 -->
		<association property="person" javaType="PersonBean">
			<id column="pid" property="pId" />
			<result column="pname" property="pName" />
			<result column="paddress" property="pAddress" />
			<result column="ptel" property="pTel" />
		</association>
	</resultMap>
	
	<select id="selectOrdersById" parameterType="int" resultMap="ordersMap">
		select p.*,o.* from person p,orders o where p.pid=o.pid and o.oid=#{o}
	</select>
</mapper>


测试类:

	private SqlSession sqlSession;

	@Override
	protected void setUp() throws Exception {
		String resource = "com/pyy/config/SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream);
		sqlSession = sqlSessionFactory.openSession();
	}
	@Test
	public void testSelectPersonById() {
		PersonBean person=sqlSession.selectOne("com.pyy.bean.PersonBean.selectPersonById",1);
		System.out.println(person.getOrders().size()); 
	}
	@Test
	public void testSelectOrdersById() {
		OrdersBean orders=sqlSession.selectOne("com.pyy.bean.OrdersBean.selectOrdersById",1);
		System.out.println(orders.getPerson()); 
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值