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获取汉字对应的拼音(全拼或首字母)

    Java获取汉字对应的拼音(全拼或首字母)

    这篇文章主要介绍了Java如何获取汉字对应的拼音(全拼或首字母),文中实现的方法是引用了pinyin4j-2.5.0.jar,然后给出了完整的示例代码,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • Hibernate使用hbm.xml配置映射关系解析

    Hibernate使用hbm.xml配置映射关系解析

    这篇文章主要介绍了Hibernate使用hbm.xml配置映射关系解析,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 关于Java中反射机制的深入讲解

    关于Java中反射机制的深入讲解

    反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性,下面这篇文章主要给大家介绍了关于Java中反射机制的相关资料,需要的朋友可以参考下
    2018-08-08
  • java实现ReadWriteLock读写锁的示例

    java实现ReadWriteLock读写锁的示例

    ReadWriteLock是Java并发包中的接口,定义了读锁和写锁,读锁允许多线程同时访问共享资源,而写锁则要求独占,这种机制适用于读多写少的场景,可以提高并发效率同时保证数据一致性,本文就来详细的介绍一下如何实现,感兴趣的可以了解一下
    2024-09-09
  • Spring Cloud工程搭建过程详解

    Spring Cloud工程搭建过程详解

    文章介绍了如何使用父子工程搭建SpringCloud项目,包括创建父工程和子项目,以及管理依赖版本,感兴趣的朋友一起看看吧
    2025-02-02
  • Java中单例模式的7种写法

    Java中单例模式的7种写法

    这篇文章主要介绍了Java中单例模式的7种写法,本文分别给出每种方式的实现代码,需要的朋友可以参考下
    2015-05-05
  • Java中将List拆分为多个小list集合的实现代码

    Java中将List拆分为多个小list集合的实现代码

    这篇文章主要介绍了Java中如何将List拆分为多个小list集合,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

    Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

    本篇文章介绍了如何在 Spring Boot 中集成 Quartz 进行定时任务调度,并通过 Cron 表达式 控制任务执行时间,Quartz 提供了更强大的任务调度能力,比 @Scheduled 注解更灵活,适用于复杂的定时任务需求
    2025-04-04
  • 详谈@Cacheable不起作用的原因:bean未序列化问题

    详谈@Cacheable不起作用的原因:bean未序列化问题

    这篇文章主要介绍了@Cacheable不起作用的原因:bean未序列化问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java使用DateUtils对日期进行数学运算经典应用示例【附DateUtils相关包文件下载】

    Java使用DateUtils对日期进行数学运算经典应用示例【附DateUtils相关包文件下载】

    这篇文章主要介绍了Java使用DateUtils对日期进行数学运算的方法,可实现针对日期时间的各种常见运算功能,并附带DateUtils的相关包文件供读者下载使用,需要的朋友可以参考下
    2017-11-11

最新评论