每位客户都可以拥有多个驾驶执照课程。例如:客户John可以拥有A,B和C类。有一个表Customer,DrivingLicence和DrivingLicenceCustomer。
select语句看起来像这样(在我的映射器中):
<select id="selectCustomer" resultType="CustomerDTO">
SELECT *
FROM Customer c
INNER JOIN DrivingLicenseCustomer d
ON c.CustomerID = d.Customer
</select>
结果可能是:
+------------+-------+---------------------+
| CustomerId | Name | DrivingLicenceClass |
+------------+-------+---------------------+
| 1 | John | A |
| 1 | John | B |
| 1 | John | C |
| 2 | Clara | A |
| 3 | Sarah | C |
+------------+-------+---------------------+
客户的课程如下:
public class CustomerDTO {
private int customerId;
private String name;
private ArrayList<String> drivingLicences;
//....
}
正如您在上面的结果中所看到的:有多个行具有相同的客户(每行代表一个对象)。目前我的实现无法正确映射DrivingLicenceClass。结果应如下所示:
+------------+-------+---------------------+
| CustomerId | Name | DrivingLicenceClass |
+------------+-------+---------------------+
| 1 | John | {A, B, C} |
| 2 | Clara | {A} |
| 3 | Sarah | {C} |
+------------+-------+---------------------+
是否可以通过MyBatis-Mapper自动填充ArrayList? 非常感谢!!!
答案 0 :(得分:0)
我用以下代码解决了它:
for (CustomerDTO customerDTO : customerList) {
List<DrivingLicence> licenceList = s.selectList("selectDrivingLicencesByCustomer", customerDTO.getCustomerId());
}
(为每位客户选择drivingLicence)
但那并不是我想要的方式。如果有更好的方法,请告诉我。