mybatis mapper.xml獲取insert后的自增ID問題
mybatis mapper.xml獲取insert后的自增ID
在MyBatis中,要獲取執(zhí)行INSERT操作后的自增ID,可以在mapper.xml文件中的對(duì)應(yīng)<insert>標(biāo)簽中使用useGeneratedKeys屬性和keyProperty屬性。
以下是一個(gè)示例:
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
INSERT INTO users (username, email) VALUES (#{username}, #{email})
</insert>在這個(gè)例子中,假設(shè)users表有一個(gè)自增主鍵字段id。useGeneratedKeys設(shè)置為true表示我們希望獲取數(shù)據(jù)庫生成的鍵值,keyProperty設(shè)置為Java對(duì)象中的屬性名,MyBatis會(huì)將生成的ID設(shè)置到這個(gè)屬性中。
確保你的數(shù)據(jù)表設(shè)置了自增主鍵,并且你的實(shí)體類中有對(duì)應(yīng)的屬性。
例如:
public class User {
private Integer id;
private String username;
private String email;
// getters and setters
}在執(zhí)行insertUser操作后,MyBatis會(huì)將生成的ID自動(dòng)設(shè)置到傳入的User對(duì)象的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>大于小于
| <= | <= |
| >= | >= |
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數(shù)據(jù)類型
<select id="queryMaxDate" resultType="java.util.Date">
SELECT MAX(date) as maxDate from dual
</select>總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java獲取漢字對(duì)應(yīng)的拼音(全拼或首字母)
這篇文章主要介紹了Java如何獲取漢字對(duì)應(yīng)的拼音(全拼或首字母),文中實(shí)現(xiàn)的方法是引用了pinyin4j-2.5.0.jar,然后給出了完整的示例代碼,有需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01
Hibernate使用hbm.xml配置映射關(guān)系解析
這篇文章主要介紹了Hibernate使用hbm.xml配置映射關(guān)系解析,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
java實(shí)現(xiàn)ReadWriteLock讀寫鎖的示例
ReadWriteLock是Java并發(fā)包中的接口,定義了讀鎖和寫鎖,讀鎖允許多線程同時(shí)訪問共享資源,而寫鎖則要求獨(dú)占,這種機(jī)制適用于讀多寫少的場(chǎng)景,可以提高并發(fā)效率同時(shí)保證數(shù)據(jù)一致性,本文就來詳細(xì)的介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2024-09-09
Java中將List拆分為多個(gè)小list集合的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java中如何將List拆分為多個(gè)小list集合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Spring?Boot?集成?Quartz并使用Cron?表達(dá)式實(shí)現(xiàn)定時(shí)任務(wù)
本篇文章介紹了如何在?Spring?Boot?中集成?Quartz?進(jìn)行定時(shí)任務(wù)調(diào)度,并通過?Cron?表達(dá)式?控制任務(wù)執(zhí)行時(shí)間,Quartz?提供了更強(qiáng)大的任務(wù)調(diào)度能力,比?@Scheduled?注解更靈活,適用于復(fù)雜的定時(shí)任務(wù)需求2025-04-04
詳談@Cacheable不起作用的原因:bean未序列化問題
這篇文章主要介紹了@Cacheable不起作用的原因:bean未序列化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Java使用DateUtils對(duì)日期進(jìn)行數(shù)學(xué)運(yùn)算經(jīng)典應(yīng)用示例【附DateUtils相關(guān)包文件下載】
這篇文章主要介紹了Java使用DateUtils對(duì)日期進(jìn)行數(shù)學(xué)運(yùn)算的方法,可實(shí)現(xiàn)針對(duì)日期時(shí)間的各種常見運(yùn)算功能,并附帶DateUtils的相關(guān)包文件供讀者下載使用,需要的朋友可以參考下2017-11-11

