Как использовать myBatis с отношением OneToOne, используя (если возможно) конфигурацию Java в Spring?

Я хочу иметь отношение oneToOne между Person и Address. Итак, мои объекты будут (без геттера и сеттера):

public class Address {
    private Integer addressId;
    private String streetAddress;
    ...getter and setter
}

public class Person {
    private Integer personId;
    private String name;
    private Integer addressId;
    ...getter and setter
}

У меня есть картограф для Person и картограф для Address:

@Mapper
public interface AddressMapper {

    @Insert("Insert into address (streetAddress) values(#{streetAddress})")
    @Options(useGeneratedKeys = true, flushCache = FlushCachePolicy.TRUE, keyProperty="addressId")
    public Address saveAddress(Address address);

    @Select("SELECT * FROM Address")
    public List<Address> getAll();
}

@Mapper
public interface PersonMapper {

    @Insert("Insert into person(name,addressId) values (#{name},#{addressId})")
    public Integer save(Person person);

    @Select("select * from Person ")
    @MapKey("personId")
    Map<Integer, Person> getAllPerson();

}

Затем я использую контроллер для создания человека и связывания адреса (это всего лишь простой пример):

@GetMapping("/insert")
public Integer insertPerson() {
    Person person = new Person("Nome1");
    Address address = new Address("via test");
    int addressId = addressMapper.saveAddress(address);
    person.setAddressId(addressId);
    return personMapper.save(person);
}

Моя проблема в том, что addressMapper.saveAddress(address); вернуть количество сохраненных адресов, а не идентификатор. Есть ли способ заставить его возвращать идентификатор адреса, вставленного с помощью конфигурации Java?

В противном случае можно ли использовать объект Person таким образом?

public class Person {
    private Integer personId;
    private String name;
    private Address addressId;
    ...getter and setter
}

Код на Github (он общедоступен, поэтому вы можете клонировать репозиторий, если хотите):

https://github.com/Mazzotta13/MyBatisExample

0 ответов

Другие вопросы по тегам