mybatis关联查询

来源:互联网 发布:软件企业评估管理办法 编辑:程序博客网 时间:2024/06/05 22:39

创建一个country表和一个minister表。

create table country(

cid  int  primarykey  ,

cname  varchar(20) not null

);

create table minister(

mid int primarykey ,

mname varchar(20)  not null ,

countryid int  not null 

)

javabean:

country类

package com.cbh.beans;import java.util.Set;public class Country {private Integer cid;private String cname;//关联属性private Set<Minister> minister;@Overridepublic String toString() {return "Country [cid=" + cid + ", cname=" + cname + ", minister="+ minister + "]";}public Integer getCid() {return cid;}public void setCid(Integer cid) {this.cid = cid;}public String getCname() {return cname;}public void setCname(String cname) {this.cname = cname;}public Set<Minister> getMinister() {return minister;}public void setMinister(Set<Minister> minister) {this.minister = minister;}}
minister类:

package com.cbh.beans;public class Minister {private Integer mid;private String mname;public Integer getMid() {return mid;}public void setMid(Integer mid) {this.mid = mid;}public String getMname() {return mname;}public void setMname(String mname) {this.mname = mname;}@Overridepublic String toString() {return "Minister [mid=" + mid + ", mname=" + mname + "]";}}

dao:

package com.cbh.dao;import com.cbh.beans.Country;public interface ICountryDao {Country selectCountryById(int cid);}
mapper:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.cbh.dao.ICountryDao"><resultMap type="Country" id="countryMapper"><id column="cid" property="cid" /><result column="cname" property="cname" /><collection property="minister" ofType="Minister"><id column="mid" property="mid" /><result column="mname" property="mname" /></collection></resultMap><select id="selectCountryById" resultMap="countryMapper">select cid,cname,mid,mname from country,minister where countryId=cid andcid=#{xxx}</select></mapper>

mapper需要仔细的看由于是关联查询mapper中resulttype存在两个对象在这里是使用的resultmap

测试类:

package com.cbh.test;import org.apache.ibatis.session.SqlSession;import org.junit.Before;import org.junit.Test;import com.cbh.Utils.MybatisUtils;import com.cbh.beans.Country;import com.cbh.dao.ICountryDao;public class mytest {private ICountryDao dao;private SqlSession sqlSession;@Beforepublic void Befroe(){sqlSession=MybatisUtils.getSqlSession();dao=sqlSession.getMapper(ICountryDao.class);}@Afterpublic void after(){if(sqlsession!=null){sqlsession.close();}}@Testpublic void test1(){Country country=dao.selectCountryById(2);System.out.println(country);}}mybatis.xml由于没有改动所以就没必要写出来。对于不明白可以看我的mybatis两个重要配置文件中有mybatis的具体内容。
                                             
0 0