mybatis的一对多映射

  

,,,,延续mybatis的一对一问题,还是上面一对一举得那个例子(http://fengcl.blog.51cto.com/9961331/1875657),

如果一个用户有多个作品怎么办?这就涉及到了一对多的问题。同样的,mybatis一对多依然可以分为两种方式来解决。

一、使用内嵌的ResultMap实现一对多映射

1)实体

public  class  User  implements 可序列化的{   ,,,private  static  final  long  serialVersionUID =, 112596782083832677 l;   ,,,private  Integer  id;//编号   ,,,private  String 电子邮件,,//邮箱   ,,,private  String  realName;,//真实姓名   ,,,private  String 电话,,,,//电话号码   ,,,,   ,,,private  List, worksInfos;,//作品   ,,,//获取,设置方法   ,,,…   }      public  class  WorksInfo  implements 可序列化的{   ,,,private  Integer  id;   ,,,private , Integer 标识;   ,,,private  Date  uploadDate;,//上传时间   ,,,private  Date  updateDate;,//更新时间   ,,,//获取,设置方法   ,,,…   }

2)刀接口省略…

3) mapper映射文件

& lt; resultMap  type=" com.tarena.djs.entity.WorksInfo ", id=皐orksInfoResultMap”比;   ,,,& lt; id 列=" id ",财产=" id ",/比;   ,,,& lt; result 列=皍ploadDate”,属性=皍ploadDate”,/比;   ,,,& lt; result 列=皍pdateDate”,属性=皍pdateDate”,/比;   & lt;/resultMap>   & lt; resultMap 类型=" com.tarena.djs.entity.User ", id=癠serResult”比;   ,,,& lt; id 列=" id ",财产=" id ",/祝辞,   ,,,& lt; result 列=暗缱佑始?属性=暗缱佑始?/比;   ,,,& lt; result 列=暗缁啊?属性=暗缁啊?/比;   ,,,& lt; result ,列=皉ealName”,,财产=皉ealName”/比;   ,,,& lt; collection 财产=皐orksInfos”, resultMap=皐orksInfoResultMap”,/比;   & lt;/resultMap>   & lt; select  id=" findTutorById ", parameterType=癷nt”, resultMap=癠serResult”比;   ,,,select  u。* *, w。   ,,,,得到user  u    ,,,left  join  worksInfo  w    ,,,提醒u.id =, w.userId    ,,,where  u.id =, # {id},,,,   & lt;/select>

4)测试省略

二、嵌套查询方式实现一对多

1)实体类如上

2) dao层接口省略

3) mapper文件映射

& lt; resultMap  type=" com.tarena.djs.entity.WorksInfo, id=皐orksInfoResultMap”比;   ,,,& lt; id 列=" id ",财产=" id ",/比;   ,,,& lt; result 列=皍ploadDate”,属性=皍ploadDate”,/比;   ,,,& lt; result 列=皍pdateDate”,属性=皍pdateDate”,/比;   & lt;/resultMap>   & lt; select  id=" findWorksInfoByUserId ", parameterType=癷nt”, resultMap=皐orksInfoResultMap”比;   ,,,select  *,得到worksInfo  where  userId =, # {userId}   & lt;/select>   & lt; resultMap 类型=" com.tarena.djs.entity.User ", id=癠serResult”比;   ,,,& lt; id 列=" id ",财产=" id ",/祝辞,   ,,,& lt; result 列=暗缱佑始?属性=暗缱佑始?/比;   ,,,& lt; result 列=暗缁啊?属性=暗缁啊?/比;   ,,,& lt; result ,列=皉ealName”,,财产=皉ealName”/比;   ,,,& lt; collection 财产=皐orksInfos”,列=" id ",选择=癴indWorksInfoByUserId”,/比;   & lt;/resultMap>   & lt; select  id=" findUserByUserId ", parameterType=癷nt”, resultMap=癠serResult”比;   ,,,select  *,得到user  where  id =, # {id}   & lt;/select>

4)测试方法忽略




mybatis的一对多映射