1:AddressVo.java
package com.wzh.app.address; public class AddressVo{ private long id; private long personId; private String address; public long getId() { return id; } public void setId(long id) { this.id = id; } public long getPersonId() { return personId; } public void setPersonId(long personId) { this.personId = personId; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
2:AddressMapper.java
package com.wzh.app.address; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface AddressMapper { @Select("<script>" + " select id,person_id as personId,address from t_address where person_id=#{personId}" + "</script>") List<AddressVo> selectAddressByPersonId(long personId); }
3:PersonVo.java
package com.wzh.app.users; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.wzh.app.address.AddressVo; import java.time.LocalDate; import java.util.List; @JsonIgnoreProperties(value = { "handler"}) public class PersonVo { private Long id; private String name; @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate birthday; private char sex; private List<AddressVo> addressList; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public LocalDate getBirthday() { return birthday; } public void setBirthday(LocalDate birthday) { this.birthday = birthday; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public List<AddressVo> getAddressList() { return addressList; } public void setAddressList(List<AddressVo> addressList) { this.addressList = addressList; } }
4:PersonMapper.java
package com.wzh.app.users; import org.apache.ibatis.annotations.*; import org.apache.ibatis.mapping.FetchType; import java.util.List; import java.util.Map; @Mapper public interface PersonMapper { @Select("<script>" + " select id,name,birthday,sex from t_person"+ "</script>") @Results({ @Result(id=true, property = "id", column="id"), @Result(property = "name", column = "name"), @Result(property = "birthday", column = "birthday"), @Result(property = "addressList", column = "id",//此处id表示将此字段作为selectAddressByPersonId查询的条件 many = @Many(select = "com.wzh.app.address.AddressMapper.selectAddressByPersonId", fetchType = FetchType.LAZY) ) }) List<PersonVo> selectListPerson(); }
5:测试效果
{ "msg": "获取用户列表信息", "code": 0, "data": [ { "id": 5, "name": "赵花", "birthday": "2002-12-20", "sex": "1", "addressList": [ { "id": 1, "personId": 5, "address": "地址1" }, { "id": 2, "personId": 5, "address": "地址2" } ] }, { "id": 6, "name": "李四", "birthday": "2001-12-20", "sex": "1", "addressList": [] }, { "id": 7, "name": "王五", "birthday": "2009-01-20", "sex": "1", "addressList": [] } ] }