在本人写的一对多的基础上继续修改,点击下面的连接即可跳转到一对多:
https://blog.youkuaiyun.com/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查询出来的结果为下图所示