MyBatis中的一对多 ,多对一,多对多【注解】
以下的例子就是针对 前端框架中所实现的 省-市-区 选择框的数据接口
前端需要的接口类型:
后台代码:
dao层:
ProvinceDAO
|
/**
*
* @author 邬志斌
* 2018年9月5日 下午2:51:13
*/
@Mapper
public interface ProvinceDAO {
@Select("select ProvinceID,ProvinceName from trade_shops.`s_province_table`")
@Results({
@Result(property = "value", column = "ProvinceID"),
@Result(property = "label", column = "ProvinceName"),
@Result(property = "children", column = "ProvinceID",
many = @Many(select = "com.wzb.dao.CityDAO.listCity"))
})
List<SProvinceDO> listProvince();
}
|
CityDAO
|
/**
*
* @author 邬志斌
* 2018年9月5日 下午2:51:13
*/
@Mapper
public interface CityDAO {
@Select("select cityid,cityname from trade_shops.s_city_table where provinceid=#{provinceid}")
@Results({
@Result(property = "value", column = "cityid"),
@Result(property = "label", column = "cityname"),
@Result(property = "children", column = "cityid",
many = @Many(select = "com.wzb.dao.AreaDAO.listArea"))
})
List<Map<String, Object>> listCity(@Param("provinceid")Integer provinceid);
|
AreaDAO
/**
*
* @author 邬志斌
* 2018年9月5日 下午2:51:13
*/
@Mapper
public interface AreaDAO {
@Select("select id,area_name from trade_shops.s_area_table where cityid=#{cityid}")
@Results({
@Result(property = "value", column = "id"),
@Result(property = "label", column = "area_name")
})
List<Map<String, Object>> listArea(@Param("cityid")Integer cityid);
} |
model层:
SProvinceDO
|
/**
*
* @author 邬志斌
* 2018年9月5日 下午2:53:59
*/
public class SProvinceDO {
private Integer value;
private String label;
// 一对多
private List<SCityDO> children;
省略 get/set
|
| |
SCityDO
|
/**
*
* @author 邬志斌
* 2018年9月5日 下午2:55:49
*/
public class SCityDO {
private Integer value;
private String label;
private Integer provinceid;
// 一对多
private List<SAreaDO> children;
省去 get/set
|
SAreaDO
|
/**
*
* @author 邬志斌
* 2018年9月5日 下午2:57:07
*/
public class SAreaDO {
private Integer value;
private String label;
private Integer cityid;
省去 get/set
|
service 基本上就是直接接收就可以 没有什么难点,现在一对多基本上完成。。
mysql 数据库 全国省市区 下载地址:https://download.csdn.net/download/qq_38941455/10647358
相关文章: