Als ich versuchte, die ID (Primärschlüssel), die von AUTO_INCREMENT in MySQL automatisch versucht wurde, auf das Objekt festzulegen, wurde 1 festgelegt.
Domänenklasse
Hoge.java
@Data
@NoArgsConstructor
public class Hoge{
private Integer id;
private String message;
}
Serviceklasse
HogeService.java
public class HogeService{
@Autowired
private HogeMapper hogeMapper;
public addHoge(){
Hoge hoge = new Hoge();
hoge.setMessage("Hello");
hoge.setId(hogeMapper.insert());
System.out.println(hoge.getId());//1
//Die ID wird 1 sein.
}
}
Mapper
HogeMapper.java
@Mapper
public interface HogeMapper{
Integer insert(Hoge hoge);
}
HogeMapper.xml
<insert id="insert">
INSERT INTO hoge(id, message)
VALUES (#{id}, #{message})
<selectKey resultType="Integer" keyProperty="id" order="AFTER">
select @@IDENTITY
</selectKey>
</insert>
Bei der obigen Methode wird nur 1 in hoge gesetzt.
Da der selectKey von MyBatis direkt dem Objekt zugewiesen ist, kann die ID mithilfe des folgenden Codes abgerufen werden.
HogeService.java
public class HogeService{
@Autowired
private HogeMapper hogeMapper;
public addHoge(){
Hoge hoge = new Hoge();
hoge.setMessage("Hello");
hogeMapper.insert();
System.out.println(hoge.getId());
//Die automatisch nummerierte ID wird ausgegeben! !!
}
}
Der SELECT KEY von Mybatis wird direkt dem Objekt zugewiesen.
Recommended Posts