如何使用Mybatis将JavaBean包含列表保存到Sql?

如何使用Mybatis将JavaBean包含列表保存到Sql?,java,mysql,mybatis,spring-mybatis,Java,Mysql,Mybatis,Spring Mybatis,众所周知,当使用Hibernate时,它可以为我们创建sql表。即使javabean有一个列表,hibernate也会为我们创建一个外部表 然而,当我使用myBatis时,我发现我必须在前面自己创建表,这非常不方便。然后我可以在表中插入值。更麻烦的是,我不确定的是,当我有一个带有列表的JavaBean时,我想将此文档保存到mysql 例如,我的java bean: public class Person { public String id; public List<Str

众所周知,当使用Hibernate时,它可以为我们创建sql表。即使javabean有一个列表,hibernate也会为我们创建一个外部表

然而,当我使用myBatis时,我发现我必须在前面自己创建表,这非常不方便。然后我可以在表中插入值。更麻烦的是,我不确定的是,当我有一个带有列表的JavaBean时,我想将此文档保存到mysql

例如,我的java bean:

public class Person {
    public String id;
    public List<String> interests;
}
公共类人物{
公共字符串id;
公众利益;
}
然后,Mysql应该有一个主表(person表)和一个外部表(interests表)

我的问题是:1。mybatis能为我创建这两张桌子吗? 2.mybatis能否为我自动转换javabean并向这两个表插入值。例如(当然这是不正确的)


插入Person.java到数据库中
  • 不,你不想要它。不要以与Spring Data或Hibernate相同的方式使用MyBatis
  • 关于自动转换。您应该为所有相关类型提供映射(在我们的条件下为PersonInterest)。处理
    服务
    层上的正确插入。MyBatis可以通过
    @Many(select=“selectPersonInterests”)

  • 不,你不想要它。不要以与Spring Data或Hibernate相同的方式使用MyBatis
  • 关于自动转换。您应该为所有相关类型提供映射(在我们的条件下为PersonInterest)。处理
    服务
    层上的正确插入。MyBatis可以通过
    @Many(select=“selectPersonInterests”)

  • <insert id="insertPerson">
        INSERT INTO Person.java TO Database
    </insert>
    
    @Mapper
    public interface PersonMapper {
    
        @InsertProvider(type = PersonProvider.class, method = "insertPerson")
        void insertPerson(@Param("person") Person person);
    
        @InsertProvider(type = PersonProvider.class, method = "insertPersonInterest")
        void insertInterestItem(@Param("interest") Interest item);
    }
    
    @Component
    public class PersonProvider {
        public String insertPersonInterest() {
            return  "insert into person_interest (...) " +
                    "values (#{...}, ...);";
        }
        public String insertPerson() {
            return  "insert into person (...) " +
                    "values (#{...}, ...);";
        }
    }