Mybatis之实现一对多关联关系

本次学习内容为mybatis章节 课时139 关联关系3.—Mybatis之实现一对多关联关系
mybatis来实现一对多关系查询,总共用到了5个文件,分别是(1)One2ManyDaoImpl.java——固定的java文件
(2)One2ManyDaoImpl.xml——局部配置文件(要特别注意这里的rusultMap的类型Com是重新定义的,定义时用到的标签有resultMap、result、collection。由于在Costomer.java的实体类中嵌入的是:(private List orderList;)所以这里用到的是collection标签,collection标签是集合的意思;而在前面一对一关系中的是(private Wife wife;)用到的标签是association标签。
(3)mybatis.xml——主配置文件。注意不要在主配置文件的mapper标签中忘记了添加入(One2ManyDaoImpl.xml)这个局部配置文件哟!
(4)Customer.java——用户的实体类
(5)Order.java——订单的实体类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
(1)One2ManyDaoImpl.java

package cn.java.dao.impl;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.annotations.Select;
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.java.entity.Customer;

public class One2ManyDaoImpl {
	private SqlSession session=null;
	@Before
	public void init() throws IOException{
		InputStream ins=Resources.getResourceAsStream("mybatis.xml");
	    SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
	    SqlSessionFactory factory=ssfb.build(ins);
	    session=factory.openSession();
	}
	
	@Test
	public void oneToMany(){
		Customer cus=session.selectOne("cn.java.dao.impl.One2ManyDaoImpl.oneToMany",1L); 
		System.out.println(cus);
	}
	
	
}

(2)One2ManyDaoImpl.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">
<!-- 
	namespace:命名空间,其值为某一个dao层类的具体路径
 -->
<mapper namespace="cn.java.dao.impl.One2ManyDaoImpl">
	<resultMap type="cn.java.entity.Customer" id="Com">
	   <result property="customerId" javaType="java.lang.Long" column="customerId"/>
	   <result property="customerName" javaType="java.lang.String" column="customerName"/>
	   <collection property="orderList" ofType="cn.java.entity.Order">
	       <result property="orderId" javaType="java.lang.Long" column="orderId"/>
	       <result property="orderName" javaType="java.lang.String" column="orderName"/>
	       <result property="price" javaType="java.lang.Float" column="price"/>
	       <result property="cusId" javaType="java.lang.Long" column="cusId"/>
	   </collection>
	</resultMap>
	
	<select id="oneToMany" parameterType="Long" resultMap="Com">
	 SELECT * FROM customer c INNER JOIN  orders o ON c.customerId=o.cusId
       WHERE c.customerId=#{0}
	</select>
</mapper>

(3)mybatis.xml

<?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>
	<!-- 配置数据库连接环境:driver、url、username、password -->
	<environments default="p6spy">
		<!-- 开始配置mysql -->
		<environment id="p6spy">
			<!--配置事务  -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 配置数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.p6spy.engine.spy.P6SpyDriver"/>
				<property name="url" value="jdbc:p6spy:mysql://localhost:3306/dt55"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 关联局部配置文件 -->
	<mappers>
		<!-- <mapper resource="cn/java/dao/impl/CaiPinDaoImpl.xml"/> -->
		<!-- <mapper resource="cn/java/dao/impl/One2OneDaoImpl.xml"/> -->
		<mapper resource="cn/java/dao/impl/One2ManyDaoImpl.xml"/>
	</mappers>
</configuration>

(4)Customer.java

package cn.java.entity;

import java.util.List;

public class Customer {
     private Long customerId;
     
     private String customerName;
     
     private List<Order> orderList;

	public Long getCustomerId() {
		return customerId;
	}

	public void setCustomerId(Long customerId) {
		this.customerId = customerId;
	}

	public String getCustomerName() {
		return customerName;
	}

	public void setCustomerName(String customerName) {
		this.customerName = customerName;
	}

	public List<Order> getOrderList() {
		return orderList;
	}

	public void setOrderList(List<Order> orderList) {
		this.orderList = orderList;
	}

	@Override
	public String toString() {
		return "Customer [customerId=" + customerId + ", customerName=" + customerName + ", orderList=" + orderList
				+ "]";
	}
     
    
}

(5)Order.java

package cn.java.entity;

import org.apache.ibatis.type.FloatTypeHandler;

public class Order {
	private Long orderId;
	private String orderName;
	private Float price;
	private Long cusId;

	public Long getOrderId() {
		return orderId;
	}

	public void setOrderId(Long orderId) {
		this.orderId = orderId;
	}

	public String getOrderName() {
		return orderName;
	}

	public void setOrderName(String orderName) {
		this.orderName = orderName;
	}

	public Float getPrice() {
		return price;
	}

	public void setPrice(Float price) {
		this.price = price;
	}

	public Long getCusId() {
		return cusId;
	}

	public void setCusId(Long cusId) {
		this.cusId = cusId;
	}

	@Override
	public String toString() {
		return "Order [orderId=" + orderId + ", orderName=" + orderName + ", price=" + price + ", cusId=" + cusId + "]";
	}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值