最后一次插入MariaDB的myBatis主键在插入的参数类型中设置。可靠的行为?

最后一次插入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)

在查看如何使用“SELECT LAST_insert_ID()”获取最新插入的主键时(我无法运行该命令-我只能获取插入的数量),我发现: 我正在使用一个类来描述要插入的表的列。此类的一个属性是主键。对于insert,不使用此选项,因为主键是自动递增的。 但在我的例子中,插入后它会保存新的主键

样本:

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上说“自动生成的键值被放入参数对象中,并且在插入方法完成后可用。”这正好回答了我的问题。