众所周知,在使用Hibernate时,它可以为我们创建sql表。即使Java Bean有一个列表,hibernate也会为我们创建一个外表。
然而,当我使用myBatis时,我发现我必须自己创建表格非常不方便。然后我可以在表中插入值。什么更不方便,我不确定当我有一个带有列表的JavaBean时,我想将此文档保存到mysql。
例如,我的java bean:
public class Person {
public String id;
public List<String> interests;
}
然后,Mysql应该有一个主表(人员表)和一个外表(兴趣表)。
我的问题是:1。mybatis可以为我创建这两张桌子吗? 2. mybatis可以为我自动转换javabean并将值插入两个表。例如(当然这不正确)
<insert id="insertPerson">
INSERT INTO Person.java TO Database
</insert>
答案 0 :(得分:0)
关于自动转换。您应该为所有相关类型提供映射(在我们的条件中为PersonInterest)。处理Service
图层上的正确插入。 MyBatis可以使用@Many(select = "selectPersonInterests")
@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 (#{...}, ...);";
}
}