zoukankan      html  css  js  c++  java
  • mybatis返回主键ID(自增和非自增)的两种方式

    一.mapper映射文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.mybatis.mapper.TableNameMapper">
        <!-- 插入数据并返回自增ID
            有自增ID功能数据库可以采用useGeneratedKeys="true"开启判断是否是自增ID
             keyProperty="id"  指定插入数据后自增ID返回时赋值给实体类的那个属性(这里是id属性)
         -->
        <insert id="insertData"  parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="id">
            insert into tableName values(null,#{name})
        </insert>
        <!-- 
            非自增主键
            像Oracle数据库采用序列来作为自增主键,通过 selectKey子来获取主键值
            MySQL同样适用(只是order属性处为after, 因为mysql自增完ID后才返回ID值)
         -->
         <insert id="insertDataAgain">
             <!-- 
                 selectKey中resultType属性指定期望主键的返回的数据类型,
                 keyProperty属性指定实体类对象接收该主键的字段名
                 order属性指定执行查询主键值SQL语句是在插入语句执行之前还是之后(可取值:after和before)
              -->
              <!-- oracle -->
             <selectKey resultType="integer" keyProperty="id" order="BEFORE">
                 SELECT LAST_INSERT_ID()
             </selectKey>
             <!--
             <selectKey resultType="integer" keyProperty="id" order="AFTER">
                 SELECT id from tableName order by id desc limit 1
             </selectKey>
             -->
            insert into tableName values(null,#{name})
        </insert>
    </mapper>

    注: ORACLE返回主键最好是在插入SQL执行之前执行,也就是order属性值设置为before

    二.mapper接口

    public interface TableNameMapper {
        //插入数据
        public Integer insertData(Map<String, Object> map);
        //插入数据
        public Integer insertDataAgain(Map<String, Object> map);
    }

    三.如何取到ID

        当数据添加成功之后,你打印接口中传入的map,会发现里面多了一个id属性,且值和数据库自增的id是一模一样的,这就是ID返回的实现

  • 相关阅读:
    win10 开机背景图
    关于在不知道具体实例化哪个窗体时调用该窗体公共变量的方法
    devexpress 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 “lc.exe”已退出,代码为 -1。
    获取打印机设置的纸张参数
    mysql 添加字段语句
    curl模拟post请求
    php CI框架log写入
    winform程序更新
    JSP的EL和JSTL解析
    报错:java.lang.IllegalArgumentException: object is not an instance of declaring class
  • 原文地址:https://www.cnblogs.com/KdeS/p/13522567.html
Copyright © 2011-2022 走看看