人员表user
| 字段 | 备注 |
|---|---|
| id | ID |
| username | 人名 |
图片表imgs
| 字段 | 备注 |
|---|---|
| id | ID |
| uid | 用户id |
| img | 图 |
实体类user
@TableName("user")
@Data//set,get
public class UserEntity {
private int ID;
private String username ;
private List<img> imgs;
}
实体类img
@TableName("imgs")
@Data//set,get
public class ImgsEntity {
private int ID;
private int uid;
private String img;
}
关联查询
<resultMap id="userMap" type="UserEntity">//前者map名 后者实体类
<id column="id" property="ID"/> //前者数据库字段名后者实体类属性
<result column="username " property="username "/> //前者数据库字段名后者实体类属性
<collection property="imgs" ofType="ImgEntity ">//前者user字段名 后者实体类
<id column="id" property="ID"/>
<result column="uid" property="uid"/>
<result column="img" property="img"/>
</collection>
</resultMap>
<select id="queryUserList" resultMap="userMap"> //前者方法名 后者map名
SELECT u.*,i.img
FROM user u LEFT JOIN imgs i
ON u.id=i.uid
</select>
分步查询
<resultMap id="userMap" type="UserEntity">//前者map名 后者实体类
<id column="id" property="ID"/> //前者数据库字段名后者实体类属性
<result column="username " property="username "/> //前者数据库字段名后者实体类属性
<collection property="imgs"
column="{uid=id}"//把id付给uid方便调用方法使用
select="ImgsDao.ImgsList" />
</resultMap>
<select id="queryUserList" resultMap="userMap"> //前者方法名 后者map名
SELECT *
FROM user u
</select>
ImgsDao.xml
<select id="ImgsList" resultType="ImgsEntity ">
SELECT imgs.img FROM imgs
WHERE imgs.uid=#{uid}
</select>
使用
@Results(value = {
@Result(id = true, property = “id”, column = “id”),//没有的话外面id会为null
@Result(property = “xiangxi”, column = “id”, many = @Many(select = “findRecordxiangxiparam”))
})//column 中可传多值如id=id,name=name 这个是传到findRecordxiangxiparam方法的参数
@Select( " SELECT wuzi.name,wuzi.type,wuzi.metering,gs.nameteam,jilu.time,jilu.sum,jilu.housum,qiansum\n"
+ " FROM fangxun.app_team_record jilu\n"
+ " left join app_team wuzi on jilu.teamid=wuzi.id \n"
+ " left join app_groupcompany gs on jilu.companyid=gs.id\n"
+ " where wuzi.id=#{id}")
List<FindRecordRes> findRecordxiangxiparam(Long id);
// 根据物品id查询物品@Many一对多@One一对一
@Results(value = {
@Result(property = "xiangxi", column = "id", many = @Many(select = "findRecordxiangxiparam"))
})
@Select( " SELECT wuzi.id,wuzi.name,wuzi.type,wuzi.metering,gs.nameteam,jilu.time,jilu.sum,jilu.housum,qiansum\n"
+ " FROM fangxun.app_team_record jilu\n"
+ " left join app_team wuzi on jilu.teamid=wuzi.id \n"
+ " left join app_groupcompany gs on jilu.companyid=gs.id\n"
+ " where state=#{state}")
List<FindRecordListRes> findRecordparam(AppTeamRecordParam param);



MyBatis关联查询解析
3048

被折叠的 条评论
为什么被折叠?



