众所周知,在使用Hibernate时,它可以为我们创建sql表。即使一个 Java Bean 有一个列表,hibernate 也会为我们创建一个外部表。
但是我在使用myBatis的时候,发现必须自己提前建表,很不方便。然后我可以向表中插入值。比较不方便和不确定的是,当我有一个带列表的JavaBean时,我想把这个文件保存到mysql中。
例如,我的java bean:
public class Person {
public String id;
public List<String> interests;
}
那么,Mysql应该有一个主表(person表)和一个外表(interests表)。
我的问题是:1.mybatis可以帮我创建这两张表吗? 2. mybatis 能否自动为我转换 javabean 并将值插入到两个表中。例如(当然这是不正确的)
<insert id="insertPerson">
INSERT INTO Person.java TO Database
</insert>
最佳答案
- 不,你不想要它。不要像使用 Spring Data 或 Hibernate 一样使用 MyBatis。
关于自动转换。您应该为所有相关类型(在我们的情况下为 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 (#{...}, ...);"; } }
关于java - 如何使用 Mybatis 将 JavaBean 包含列表保存到 Sql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43629911/