java - 使用 MyBatis 将集合持久化到对象中

标签 java sql collections persistence mybatis

我有 POJO 类:

class Ticket {
    private int id;
    private double cost;
    private Date time;
    private List<Place> places;

    // Getters and setters here
}

class Place {
    private int row;
    private int place;

    // Getters and setters here
}

然后我创建一张票和一些地方:

Ticket ticket = new Ticket();
ticket.setCost(58.7);
ticket.setTime(new Date());

Place place1 = new Place();
place1.setRow(1);
place1.setPlace(2);
ticket.addPlace(place1);

Place place2 = new Place();
place2.setRow(3);
place2.setPlace(4);
ticket.addPlace(place2);

现在我想将它保存到数据库:

session.insert("insertTicket", ticket);
session.commit();

在 MapperConfig.xml 中我写了这几行:

<insert id="insertTicket" parameterType="Ticket">
    INSERT INTO tickets (cost, time) VALUES (#{cost}, #{time})
</insert>

如何在自动模式下保存List places? MyBatis 可以帮我保存吗? 或者我需要使用 foreach 手动迭代并手动插入每个 Place

感谢您的帮助。

最佳答案

即使 MyBatis 能够支持反向(即在查询期间使用嵌套选择或从连接填充列表),也没有自动模式将包含列表插入数据库。

根据这个Google Groups discussion您必须手动插入列表元素。

关于java - 使用 MyBatis 将集合持久化到对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287544/

相关文章:

java - Eclipse PDT 插件给我带来了麻烦

java - 如何使用 Elasticsearch 从索引同步数据库

java - 需要帮助在 GridLayout 中移动 JLabel

php - 如何忽略 NOW() 的时间?

sql - 如何查找一个表中在另一表中没有对应行的行

sql - 我应该在数据库模式中允许空值吗?

java - Stream.of(item).collect(Collectors.toSomeCollection()) 比 new SomeCollection(Arrays.asList(item)) 快吗?

java - Hibernate 一对一允许多对一

java - 将 List<WebElement> 转换为 WebElement

java - 如何使Map的特化变得不可修改?