一对多
1.ProvincesInfo.java
public class ProvincesInfo {//省
private Integer id;
private String provinceId;
private String province;
public ProvincesInfo(){
}
//描述一对多
private Set<CityInfo> citySet;
public Set<CityInfo> getCitySet() {
return citySet;
}
public void setCitySet(Set<CityInfo> citySet) {
this.citySet = citySet;
}
@Override
public String toString() {
return "ProvincesInfo{" +
"id=" + id +
", provinceId='" + provinceId + '\'' +
", province='" + province + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
}
CityInfo.java
public class CityInfo {//市
private Integer id;//主键
private String cityId;
private String city;
private String provinceId;//类似于外键
public CityInfo(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCityId() {
return cityId;
}
public void setCityId(String cityId) {
this.cityId = cityId;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
@Override
public String toString() {
return "ProvincesMapper{" +
"id=" + id +
", cityId='" + cityId + '\'' +
", city='" + city + '\'' +
", provinceId='" + provinceId;
}
}
ProvincesMapper.java
public interface ProvincesMapper {
List<ProvincesInfo> findAllProvinces();
}
ProvincesMapper.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">
<mapper namespace="mapper2.ProvincesMapper">
<resultMap id="prov1" type="bean2.ProvincesInfo">
<id property="id" column="pid"/>
<result property="provinceId" column="provinceid"/>
<result property="province" column="province"/>
<collection property="citySet" column="provinceId" ofType="bean2.CityInfo"><!--参数: 维护的集合名 外键名 泛型-->
<id property="id" column="cid" /><!--将数据库中pid的这个列对应的值赋给pi.id这个JavaBean对应的值-->
<result property="cityId" column="cityid"/>
<result property="city" column="city"/>
<result property="provinceId" column="provinceid"/>
</collection>
</resultMap>
<select id="findAllProvinces" resultMap="prov1">
select
c.id as cid,cityid,city,c.provinceid,p.id as pid,p.provinceid,province
from
provinces p left join cities c
on c.provinceid=p.provinceid
</select>
</mapper>
test01.java
public class test01 {
public static void main(String[] args) {
InputStream is = test01.class.getClassLoader().getResourceAsStream("config.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = ssf.openSession();
ProvincesMapper provincesMapper = sqlSession.getMapper(ProvincesMapper.class);
List<ProvincesInfo> set = provincesMapper.findAllProvinces();
for (ProvincesInfo ps:set) {
System.out.println(ps);
for (CityInfo ci:ps.getCitySet()) {
System.out.println("\t"+ci);
}
}
}
}
多对一
CityInfo.java
public class CityInfo {//市
private Integer id;//主键
private String cityId;
private String city;
private String provinceId;//类似于外键
//描述多对一情况
private ProvincesInfo pi;
public CityInfo(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCityId() {
return cityId;
}
public void setCityId(String cityId) {
this.cityId = cityId;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public ProvincesInfo getPi() {
return pi;
}
public void setPi(ProvincesInfo pi) {
this.pi = pi;
}
@Override
public String toString() {
return "ProvincesMapper{" +
"id=" + id +
", cityId='" + cityId + '\'' +
", city='" + city + '\'' +
", provinceId='" + provinceId;
}
}
ProvincesInfo.java
public class ProvincesInfo {//省
private Integer id;
private String provinceId;
private String province;
public ProvincesInfo(){
}
@Override
public String toString() {
return "ProvincesInfo{" +
"id=" + id +
", provinceId='" + provinceId + '\'' +
", province='" + province + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
}
CityMapper.java
public interface CityMapper {
List<CityInfo> findAllCity();
}
CityMapper.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">
<mapper namespace="mapper.CityMapper">
<resultMap id="city1" type="bean.CityInfo">
<id property="id" column="cid"/>
<result property="cityId" column="cityid"/>
<result property="city" column="city"/>
<result property="provinceId" column="provinceid"/>
<association property="pi" column="provinceId" javaType="bean.ProvincesInfo"><!--参数: 属性名 外键名 属性类型-->
<id property="id" column="pid" /><!--将数据库中pid的这个列对应的值赋给pi.id这个JavaBean对应的值-->
<result property="provinceId" column="provinceid"/>
<result property="province" column="province"/>
</association>
</resultMap>
<select id="findAllCity" resultMap="city1">
select
c.id as cid,cityid,city,c.provinceid,p.id as pid,p.provinceid,province
from
cities c left join provinces p
on c.provinceid=p.provinceid
</select>
</mapper>
test1.java
public class test1 {
public static void main(String[] args) throws FileNotFoundException {
InputStream is = test1.class.getClassLoader().getResourceAsStream("config.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
SqlSession session = ssf.openSession();
CityMapper cityMapper = session.getMapper(CityMapper.class);
List<CityInfo> list = cityMapper.findAllCity();
for (CityInfo cityInfo:list) {
System.out.println(cityInfo);
}
}
}
config.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>
<settings><!--控制台可以输出sql语句-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<environments default="development"> <!--development:开发模式-->
<environment id="development">
<transactionManager type="JDBC"/>
<!--配置数据库连接信息-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers><!--加载所有的xml文件-->
<mapper resource="mapper/CityMapper.xml"/>
<mapper resource="mapper/EmpMapper.xml"/>
<mapper resource="mapper2/ProvincesMapper.xml"/>
<mapper resource="mapper2/DeptMapper.xml"/>
</mappers>
</configuration>