mybatis-flex
mybatis-flex copied to clipboard
使用saveOrUpdate产生的sql一直是update
版本:1.8.8
实体类主键使用自增:
@Data
@Table(value = "sys_test")
public class SysTestEntity {
@Id(keyType = KeyType.Auto)
private Long id;
@Column(value = "NAME")
private String name;
}
实体类主键使用None:
@Data
@Table(value = "sys_test_2")
public class SysTest2Entity {
@Id(keyType = KeyType.None)
private String id;
@Column(value = "NAME")
private String name;
}
测试:
@Test
void saveOrUpdate() {
SysTestEntity testEntity = new SysTestEntity();
//testEntity.setId(1L);
testEntity.setName("test aaa");
sysTestService.saveOrUpdate(testEntity);
SysTest2Entity test2Entity = new SysTest2Entity();
test2Entity.setId("aaa");
test2Entity.setName("aaa test");
sysTest2Service.saveOrUpdate(test2Entity);
}
控制台打印的SQL:
INSERT INTO sys_test(NAME) VALUES ('test aaa')
UPDATE sys_test_2SETNAME= 'aaa test' WHEREid= 'aaa'
自增主键也有问题,当设置ID为一个不存在的值时,SQL还是执行的UPDATE语句
SysTestEntity testEntity = new SysTestEntity();
testEntity.setId(2L);
testEntity.setName("test aaa");
sysTestService.saveOrUpdate(testEntity);
底层逻辑是设置了主键就是更新,未设置主键就是insert