mybatis mapper.xml获取insert后的自增ID问题

 更新时间:2024年05月18日 10:35:18   作者:JaneYork  
这篇文章主要介绍了mybatis mapper.xml获取insert后的自增ID问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mybatis mapper.xml获取insert后的自增ID

在MyBatis中,要获取执行INSERT操作后的自增ID,可以在mapper.xml文件中的对应<insert>标签中使用useGeneratedKeys属性和keyProperty属性。

以下是一个示例:

<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
  INSERT INTO users (username, email) VALUES (#{username}, #{email})
</insert>

在这个例子中,假设users表有一个自增主键字段id。useGeneratedKeys设置为true表示我们希望获取数据库生成的键值,keyProperty设置为Java对象中的属性名,MyBatis会将生成的ID设置到这个属性中。

确保你的数据表设置了自增主键,并且你的实体类中有对应的属性。

例如:

public class User {
  private Integer id;
  private String username;
  private String email;
 
  // getters and setters
}

在执行insertUser操作后,MyBatis会将生成的ID自动设置到传入的User对象的id属性中。

mybatis mapper.xml常用写法

resultMap写法

<resultMap id="BaseResultVoMap" type="*.*.*.Entity" >
    <id column="id" property="id" jdbcType="VARCHAR" />
    <result column="value" property="value" jdbcType="VARCHAR" />
    <result column="date" property="date" jdbcType="DATE" />
    <result column="time" property="time" jdbcType="TIMESTAMP" />
    <result column="status" property="status" jdbcType="INTEGER" />
    <result column="bool" property="bool" jdbcType="BOOLEAN" />
</resultMap>

if 书写

<if test=' value != null and value!= ""'>
     value = #{value}
</if>

foreach 书写

<foreach collection="ids" item="item" open="(" separator=" , " close=")" index="index">
     #{item}
</foreach>

批量插入 

<insert id="insert" parameterType="java.util.Map">
    insert into table(id, value, date, time, status)
    values
    <foreach collection="list" item="entity" separator=",">
        (
        #{entity.id}, 
        #{entity.value},
        #{entity.date},
        #{entity.time},
        #{entity.status}
        )
    </foreach>
</insert>

批量更新 

<update id="batchUpdate" parameterType="java.util.List">
    <foreach collection="lists" item="item" index="index" open="" close="" separator=";">
        UPDATE table_name
        <set>
            create_time = #{item.createTime}
        </set>
        WHERE id = #{item.id}
    </foreach>
</update>

choose 书写

<choose>
    <when test=' time != null and time == "1" '>
         table_${time}
    </when>
    <otherwise>
         table_${date}
    </otherwise>
</choose>

大于小于

&lt;=<=
&gt;=>=

sql 书写

<sql id="BaseColumn">
    id, value, date, time, status
</sql>
 
<select id="selectByPidsAndQids" parameterType="java.util.Map" resultMap="BaseResultVoMap">
    SELECT <include refid="BaseColumn"/>
    FROM table
</select>

resultType中接受Date数据类型

<select id="queryMaxDate" resultType="java.util.Date">
      SELECT MAX(date)  as maxDate from dual
</select>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java利用Jackson序列化实现数据脱敏详解

    Java利用Jackson序列化实现数据脱敏详解

    在项目中有些敏感信息不能直接展示,比如客户手机号、身份证、车牌号等信息,展示时均需要进行数据脱敏,防止泄露客户隐私。本文将利用Jackson序列化实现数据脱敏,需要的可以参考一下
    2023-03-03
  • java通过poi解析word入门的操作方法

    java通过poi解析word入门的操作方法

    Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目,可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作,本文给大家介绍java通过poi解析word入门的操作方法,感兴趣的朋友一起看看吧
    2024-08-08
  • Springboot的jdk安装与配置教程

    Springboot的jdk安装与配置教程

    本文介绍了在Windows、macOS和Linux系统上下载和配置JDK(Java Development Kit)的步骤,它涵盖了从下载JDK、选择合适的安装路径、配置环境变量到验证安装的全过程,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Java编程实现的模拟行星运动示例

    Java编程实现的模拟行星运动示例

    这篇文章主要介绍了Java编程实现的模拟行星运动,涉及java基于swing组建绘制动态效果及数值运算相关操作技巧,并总结分析了java面向对象的相关特性,需要的朋友可以参考下
    2018-04-04
  • MyBatis-Plus内置接口方法的具体使用

    MyBatis-Plus内置接口方法的具体使用

    java开发应用程序与数据库交互使用比较多的就是mybatisPlus接口,本文主要介绍了MyBatis-Plus内置接口方法的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Springboot中静态文件的两种引入方式总结

    Springboot中静态文件的两种引入方式总结

    这篇文章主要介绍了Springboot中静态文件的两种引入方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java嵌套for循环的几种常见优化方案

    Java嵌套for循环的几种常见优化方案

    这篇文章主要给大家介绍了关于Java嵌套for循环的几种常见优化,在Java中优化嵌套for循环可以通过以下几种方式来提高性能和效率,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • java中\t,\n,\r,\b,\f 的作用及说明

    java中\t,\n,\r,\b,\f 的作用及说明

    这篇文章主要介绍了java中\t,\n,\r,\b,\f 的作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java学习笔记之面向对象编程精解

    Java学习笔记之面向对象编程精解

    看名字它是注重对象的。当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决
    2021-09-09
  • SpringBoot bean加载顺序怎样查看(源码解读)

    SpringBoot bean加载顺序怎样查看(源码解读)

    这篇文章主要介绍了SpringBoot bean加载顺序怎样查看(源码解读)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论