MyBatis Insert操作(一)

使用MyBatis在mapper设置 useGeneratedKeys=“true” keyProperty=“id” 来获取自增长ID 是比较常见的配置
如下面配置

<insert id="save" useGeneratedKeys="true" keyProperty="id" parameterType="cn.domain.HrmRole" >
        insert into HrmRoles(rolesmark,rolesname,subcompanyid)
        values(
        #{rolesmark},
        #{rolesname},
        #{subcompanyid}
        )
    </insert>

这种配置适合在使用 支持 主键自增长的数据库如 mysql、sqlserver时使用,而如果使用了比如oracle数据库则不能上述配置。
上述配置也有个前提,就是在实际数据库insert操作之后 数据库不要有类似 触发器等通过jdbc自身无法控制动作,否则会爆出以下错误

Cause: org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。

如果遇到上述问题可以通过 禁用触发表上绑定的触发器,或者使用第二种获取自增键的配置进行解决

<insert id="save" parameterType="cn.domain.HrmRole" >
        <selectKey resultType="int" keyProperty="id" order="AFTER">
            select @@IDENTITY as id
        </selectKey>
        insert into HrmRoles(rolesmark,rolesname,subcompanyid)
        values(
        #{rolesmark},
        #{rolesname},
        #{subcompanyid}
        )
    </insert>

创建成功后,最后返回的主键ID会被赋予到当前创建新纪录的对象中,可以通过 当前对象直接查看获取

    public void  createHrmRole(){
        HrmRole hrmRole=new HrmRole();
        hrmRole.setRolesmark("新的权限");
        hrmRoleDao.save(hrmRole);
        System.out.println(hrmRole.getId());

    }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MyBatis中的INSERT操作用于向数据库中插入数据。根据引用,可以找到关于MyBatis INSERT操作的详细信息。INSERT操作是通过使用MyBatisMapper接口和映射文件来执行的。 在执行INSERT操作时,我们可以使用`<insert>`元素在映射文件中定义INSERT语句。在这个元素中,我们可以指定要执行的SQL语句以及相关的参数。根据引用,可以了解到在MyBatis中可以使用动态SQL来构建INSERT语句,以便根据不同的条件插入不同的数据。 在执行INSERT操作时,我们还可以使用`<selectKey>`元素来获取插入操作生成的主键。根据引用,selectKey操作操作查询结果赋insert元素的parameterType入参实例下对应的属性,并提供给insert语句使用。 总结起来,MyBatis中的INSERT操作是通过Mapper接口和映射文件来执行的。我们可以使用`<insert>`元素定义INSERT语句,并使用动态SQL来构建不同条件的INSERT语句。此外,我们还可以使用`<selectKey>`元素来获取插入操作生成的主键。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MyBatis魔法堂:Insert操作详解(返回主键、批量插入)](https://blog.csdn.net/weixin_33910759/article/details/85668982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值