MyBatis实现多对一

在本人写的一对多的基础上继续修改,点击下面的连接即可跳转到一对多:
https://blog.csdn.net/qq_43254488/article/details/84316244
第一个修改的地方:修改实体映射文件:
person.xml配置文件(下边代码的解释在一对多中有注解解释):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "mybatis-3-mapper" "mybatis-3-mapper.dtd" >
<mapper namespace="com.zhiyuan.Bean">
	<resultMap type="food" id="aa">
		<result property="id" column="id"/>
		<result property="p_id" column="p_id"/>
		<result property="fname" column="fname"/>
		<result property="fkouwei" column="fkouwei"/>
		<association property="person" javaType="person">
			<result property="id" column="id"/>
			<result property="name" column="name"/>
			<result property="sex" column="sex"/>
		</association>
	</resultMap>
	<select id="GetID" parameterType="String" resultMap="aa">
		select * from person,food where person.id=food.p_id and food.fkouwei=#{fkouwei}
	</select>
</mapper>

第二个修改的地方:修改测试类:
Text类:

package com.zhiyuan.Text;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.zhiyuan.Bean.Food;
import com.zhiyuan.Bean.Person;

public class Text {

	public static void main(String[] args) throws IOException {
		Reader reader = Resources.getResourceAsReader("config.xml");
		//通过Resources类调用getResourceAsReader方法来获取 config主配置文件并用Reader来进行接收
		SqlSessionFactory session = new SqlSessionFactoryBuilder().build(reader);//创建工厂回话
		List<Food> list= session.openSession().selectList("com.zhiyuan.Bean.GetID","甜");
		//openSession用来创建Sqlsession,selectList用来查询一条或多条记录
		for (Food food : list) {
			System.out.println("ID:"+food.getId()+"  P_Id:"+food.getP_id()+"  食物名:"+food.getFname()+"  口味:"+food.getFkouwei());
			Person person= food.getPerson();
			System.out.println("ID:"+person.getId()+"  姓名:"+person.getName()+"  性别:"+person.getSex());
		}
		//上边是查询一条或多条语句,下边是查询一条语句
//		Food food= session.openSession().selectOne("com.zhiyuan.Bean.GetID",1);
		//如果需要用selectOne来接收,需要在person.xml文件中改两个地方:
		//1.将parameterType="String"中的String修改为int,因为1是int类型。
		//2.将查询语句中的food.fkouwei=#{fkouwei}中的food.fkouwei改为food.id因为之前是根据口味来查询,现在是根据id来查询
//		System.out.println("ID:"+food.getId()+"  P_Id:"+food.getP_id()+"  食物名:"+food.getFname()+"  口味:"+food.getFkouwei());
//		Person person = food.getPerson();
//		System.out.println("ID:"+person.getId()+"  姓名:"+person.getName()+"  性别:"+person.getSex());
	}

}

运行结果:
用selectList查询出来的结果为下图所示
在这里插入图片描述
用selectOne查询出来的结果为下图所示
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值