(转)Mybatis insert后返回主键给实体对象(Mysql数据库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<insert id="insert" parameterType="com.zqgame.game.website.models.Team"
            <selectKey resultType="java.lang.Integer" keyProperty="teamId" order="AFTER"
                SELECT LAST_INSERT_ID() 
            </selectKey> 
            INSERT INTO kz_team 
            <trim prefix="(" suffix=")" suffixOverrides=","
                <if test="teamId != null"
                    `team_id`, 
                </if
                <if test="teamName != null"
                    `team_name`, 
                </if
                <if test="regionId != null"
                    `region_id`, 
                </if
                <if test="provinceId != null"
                    `province_id`, 
                </if
                <if test="cityId != null"
                    `city_id`, 
                </if
                <if test="address != null"
                    `address`, 
                </if
                <if test="idImg != null"
                    `id_img`, 
                </if
                <if test="teamLogo != null"
                    `team_logo`, 
                </if
                <if test="introduce != null"
                    `introduce`, 
                </if
                <if test="accountId != null"
                    `account_id`, 
                </if
            </trim> 
            <trim prefix="values (" suffix=")" suffixOverrides=","
                <if test="teamId != null"
                    #{teamId,jdbcType=INTEGER}, 
                </if
                <if test="teamName != null"
                    #{teamName,jdbcType=VARCHAR}, 
                </if
                <if test="regionId != null"
                    #{regionId,jdbcType=INTEGER}, 
                </if
                <if test="provinceId != null"
                    #{provinceId,jdbcType=INTEGER}, 
                </if
                <if test="cityId != null"
                    #{cityId,jdbcType=INTEGER}, 
                </if
                <if test="address != null"
                    #{address,jdbcType=VARCHAR}, 
                </if
                <if test="idImg != null"
                    #{idImg,jdbcType=VARCHAR}, 
                </if
                <if test="teamLogo != null"
                    #{teamLogo,jdbcType=VARCHAR}, 
                </if
                <if test="introduce != null"
                    #{introduce,jdbcType=VARCHAR}, 
                </if
                <if test="accountId != null"
                    #{accountId,jdbcType=INTEGER}, 
                </if
            </trim> 
    </insert>

<selectKey resultType="Java.lang.Integer" keyProperty="teamId" order="AFTER">  //teamId实体类主键
     SELECT LAST_INSERT_ID()
</selectKey>

或者

给<insert id="xx"   useGeneratedKeys="true" keyProperty="teamId"> 加入2个属性就可以省略上面那句<selectKey>xxxxxx</selectKey>

在mybatis中标红的那句话 能将插入的主键返回给实体对象

1
2
3
4
5
6
7
if (StringUtils.isEmpty(team.getTeamLogo())) { 
    team.setTeamLogo(defaultTeamLogo); 
    team.setAccountId(accountId); 
    insert(team); 
   
    System.out.println(team.getTeamId());

对于业务中需要取得插入后的主键id值得童鞋来说很方便

不过那个函数貌似是MySQL提供的 需要其他数据库的另外寻找方法

posted @   人艰不拆_zmc  阅读(3696)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2016-08-24 构建基本脚本(转)*****好文章*****
点击右上角即可分享
微信分享提示