Mybatis映射关系
作者:gqk
一、一对一关系:
比如说一个老婆对应一个丈夫,一个丈夫对应一个老婆:
1)数据库信息
create table t_wife( id number primary key, wifename varchar2(50), fk_husband_id number ) create table t_husband( id number primary key, husbandname varchar2(50) ) insert into t_wife values(1,'赵丽颖',1); insert into t_husband values(1,'gqk');
2)创建javaBean
Husband
package com.xkrj.vo; public class Husband { private int personid; private String husbandname; private Wife wife; public int getPersonid() { return personid; } public void setPersonid(int personid) { this.personid = personid; } public String getHusbandname() { return husbandname; } public void setHusbandname(String husbandname) { this.husbandname = husbandname; } public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
Wife
package com.xkrj.vo; public class Wife { private int wifeid; private String wifename; private Husband husband; public int getWifeid() { return wifeid; } public void setWifeid(int wifeid) { this.wifeid = wifeid; } public String getWifename() { return wifename; } public void setWifename(String wifename) { this.wifename = wifename; } public Husband getHusband() { return husband; } public void setHusband(Husband husband) { this.husband = husband; } }
3)接下来建立两个接口,HusbandMapper,WifeMapper.
package com.xkrj.dao; import com.xkrj.vo.Husband; import com.xkrj.vo.Wife; public interface HusbandMapper { //根据id查询丈夫信息 public Husband queryHusbandById(int id); //根据id查询妻子信息 public Wife queryWifeById(int id); }
4)配置一对一
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xkrj.dao.HusbandMapper"> <resultMap type="com.xkrj.vo.Husband" id="resultHusband"> <id property="personid" column="id" /> <result property="husbandname" column="husbandname" /> <association property="wife" column="id" select="queryWifeById"></association> </resultMap> <!-- resultMap 命名引用外部的 resultMap。返回的是一个集合。 --> <select id="queryHusbandById" resultMap="resultHusband" parameterType="int"> select * from t_husband where id=#{id} </select> <select id="queryWifeById" resultType="com.xkrj.vo.Wife"> select * from t_wife where id = #{id} </select> </mapper>
5)测试:
public static Husband queryHusbandById(int id) throws IOException{ InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); HusbandMapper hm = session.getMapper(HusbandMapper.class); Husband hd = hm.queryHusbandById(id); return hd; }
二、多对一关系:
一对多关系