最后一次插入MariaDB的myBatis主键在插入的参数类型中设置。可靠的行为?
在查看如何使用“SELECT LAST_insert_ID()”获取最新插入的主键时(我无法运行该命令-我只能获取插入的数量),我发现: 我正在使用一个类来描述要插入的表的列。此类的一个属性是主键。对于insert,不使用此选项,因为主键是自动递增的。 但在我的例子中,插入后它会保存新的主键 样本:最后一次插入MariaDB的myBatis主键在插入的参数类型中设置。可靠的行为?,mariadb,mybatis,last-insert-id,Mariadb,Mybatis,Last Insert Id,在查看如何使用“SELECT LAST_insert_ID()”获取最新插入的主键时(我无法运行该命令-我只能获取插入的数量),我发现: 我正在使用一个类来描述要插入的表的列。此类的一个属性是主键。对于insert,不使用此选项,因为主键是自动递增的。 但在我的例子中,插入后它会保存新的主键 样本: public class AbsenceJournalType { protected long primaryKey; @XmlElement(required = true)
public class AbsenceJournalType {
protected long primaryKey;
@XmlElement(required = true)
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar timestamp;
@XmlElement(required = true)
protected String employeeId;
@XmlElement(required = true)
protected String authorizer;
映射器对插入的描述如下:
<insert id="insertAbsence"
parameterType="de.gombers.timetracker.shared.dto.AbsenceJournalType">
INSERT INTO `app_absence_journal`
(
`timestamp`, `employeeId`,
`authorizer`,
`
)
VALUES( #{timestamp,
javaType=javax.xml.datatype.XMLGregorianCalendar, jdbcType=DATE,
typeHandler=de.gombers.timetracker.shared.ibatis.CustomDateTypeHandler},
#{employeeId},
#{authorizer},
CREATE TABLE `app_absence_journal` (
`primaryKey` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
`timestamp` DATETIME NOT NULL COMMENT 'timestamp when edited',
`employeeId` VARCHAR(50) NOT NULL COMMENT 'referenced person - MasterData ID',
`authorizer` VARCHAR(50) NULL DEFAULT NULL COMMENT 'authorizers Master Data ID',
我已经为列定义了一个到类的映射,尽管它没有与此处的insert一起使用:
<resultMap id="AbsenceJournalTypeMap"
type="de.gombers.timetracker.shared.dto.AbsenceJournalType">
<result property="ajid" column="ajid" />
<result property="timestamp" column="timestamp"
typeHandler="de.gombers.timetracker.shared.ibatis.CustomDateTypeHandler" />
<result property="employeeId" column="employeeid" />
插入后,字段primaryKey包含正确的自动递增primaryKey。我不知道这是否是一种可靠的行为。有人知道吗?我没有找到任何提到这一点的条目。可能是因为您启用了
useCeneratedKeys
。这里有一个简短的说明。非常感谢:FAQ上说“自动生成的键值被放入参数对象中,并且在插入方法完成后可用。”这正好回答了我的问题。