• Mybatis中如何返回主键值


    1.自增长类型主键

    Mapper接口中的抽象方法

    int insertEmployee(Employee employee);

     SQL语句

    1. <insert id="insertEmployee" useGeneratedKeys="true" keyProperty="empId">
    2. insert into t_emp(emp_name,emp_salary)
    3. values(#{empName},#{empSalary})
    4. insert>

     junit测试

    1. @Test
    2. public void testSaveEmp() {
    3. EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);
    4. Employee employee = new Employee();
    5. employee.setEmpName("john");
    6. employee.setEmpSalary(666.66);
    7. employeeMapper.insertEmployee(employee);
    8. log.info("employee.getEmpId() = " + employee.getEmpId());
    9. }

    注意

    Mybatis是将自增主键的值设置到实体类对象中,而不是以Mapper接口方法返回值的形式返回。

     

     2.非自增长类型主键

    而对于不支持自增型主键的数据库(例如 Oracle)或者字符串类型主键,则可以使用 selectKey 子元素:selectKey 元素将会首先运行,id 会被设置,然后插入语句会被调用!

    使用 selectKey 帮助插入UUID作为字符串类型主键示例:

    1. <insert id="insertUser" parameterType="User">
    2. <selectKey keyProperty="id" resultType="java.lang.String"
    3. order="BEFORE">
    4. SELECT UUID() as id
    5. selectKey>
    6. INSERT INTO user (id, username, password)
    7. VALUES (
    8. #{id},
    9. #{username},
    10. #{password}
    11. )
    12. insert>

    在上例中,我们定义了一个 insertUser 的插入语句来将 User 对象插入到 user 表中。我们使用 selectKey 来查询 UUID 并设置到 id 字段中。

    通过 keyProperty 属性来指定查询到的 UUID 赋值给对象中的 id 属性,而 resultType 属性指定了 UUID 的类型为 java.lang.String

    需要注意的是,我们将 selectKey 放在了插入语句的前面,这是因为 MySQL 在 insert 语句中只支持一个 select 子句,而 selectKey 中查询 UUID 的语句就是一个 select 子句,因此我们需要将其放在前面。

    最后,在将 User 对象插入到 user 表中时,我们直接使用对象中的 id 属性来插入主键值。

    使用这种方式,我们可以方便地插入 UUID 作为字符串类型主键。当然,还有其他插入方式可以使用,如使用Java代码生成UUID并在类中显式设置值等。需要根据具体应用场景和需求选择合适的插入方式。

     

  • 相关阅读:
    【数据结构-字符串 四】【字符串识别】字符串转为整数、比较版本号
    【VASP】KPOINTS文件介绍
    第二章 人工智能专题之Python进阶 - Matplotlib库
    Android Unable to determine activity name
    美容行业怎样利用自动化程序减少积压索赔案件
    算法导论笔记5:贪心算法
    Compose 编译器版本和Kotlin版本对应关系
    [echarts] 折线图+柱状图,多 Y 轴
    嵌入式学习笔记(28)按键和CPU的中断系统
    VMware Workstation Pro 16、CentOS7镜像 (Windows10)下载安装
  • 原文地址:https://blog.csdn.net/m0_63949203/article/details/132855812