实验步骤
背景描述:一个省拥有很多个城市。
项目结构:
1.创建实体类
城市
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class City {
private Integer cid;
private String cname;
private Integer person;
private Integer pid;
}
省份
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Province {
private Integer pid;
private String pname;
/*在你的省份中有对应的城市----城市不重复;*/
private Set<City> Cities;
}
2.创建mapper接口
从表接口:
public interface CityDao {
//根据省份id查找城市
@Select("select * from city where pid=#{pid}")
List<City> getCityById(Integer pid) throws Exception;
}
主表接口:
public interface ProvinceDao {
//根据省份id查找城市
@Select("select * from province where pid=#{pid}")
@Results({
@Result(id = true, column = "pid", property = "pid"),
@Result(column = "pname", property = "pname"),
@Result(column = "pid",property="Cities",
//一对多映射
many = @Many(select = "com.rg1.mapper.CityDao.getCityById", fetchType = FetchType.EAGER
)),
})
Province getProvinceById(Integer pid) throws Exception;
}
3.全局配置文件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>
<properties resource="jdbc.properties"></properties>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.rg1.mapper.CityDao"></mapper>
<mapper class="com.rg1.mapper.ProvinceDao"></mapper>
</mappers>
</configuration>
4.测试
public class Test1 {
public static void main(String[] args) throws Exception {
InputStream inputstream = Resources.getResourceAsStream("config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
SqlSession session = sqlSessionFactory.openSession(true);
System.out.println(session);
ProvinceDao mapper = session.getMapper(ProvinceDao.class);
Province province = mapper.getProvinceById(1);
System.out.println(province.getPname());
Set<City> cities = province.getCities();
for(City c:cities){
System.out.println("---"+c.getCname());
}
}
}
运行截图: