MyBatis insert 返回主键的方法

本文深入探讨了如何使用 MyBatis 对 SQL Server 2005 数据库进行操作,包括数据库表结构、MyBatis XML 配置以及调用 Mapper 返回主键的方法。同时介绍了使用 mybatis-generator 自动生成 DAO 层的配置,并解释了生成主键的相关设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库:SqlServer2005

表结构:
/*==============================================================*/
/* Table: Dic_City */
/*==============================================================*/
createtableDic_City(
IDintidentity,
City_Codevarchar(10)notnull,
Provinces_Codevarchar(20)notnull,
State_Codevarchar(10)notnull,
City_Namevarchar(50)null,
PY_Codevarchar(50)null,
PY_Code_Shortvarchar(10)null,
Ext1varchar(20)null,
Ext2varchar(20)null,
Ext3varchar(20)null,
Ext4varchar(20)null,
Ext5varchar(20)null,
constraintPK_DIC_CITYprimarykey(ID)
)

MyBatisXML配置,下面两种方式都行

方式1:
<insertid="insert"parameterType="cn.softsea.model.DicCity">
<selectKeyresultType="java.lang.Integer"keyProperty="id"order="AFTER">
SELECT @@IDENTITY
</selectKey>
insert into Dic_City (City_Code, Provinces_Code,
State_Code, City_Name, PY_Code,
PY_Code_Short, Ext1, Ext2,
Ext3, Ext4, Ext5)
values (#{cityCode,jdbcType=VARCHAR}, #{provincesCode,jdbcType=VARCHAR},
#{stateCode,jdbcType=VARCHAR}, #{cityName,jdbcType=VARCHAR}, #{pyCode,jdbcType=VARCHAR},
#{pyCodeShort,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR},
#{ext3,jdbcType=VARCHAR}, #{ext4,jdbcType=VARCHAR}, #{ext5,jdbcType=VARCHAR})
</insert>

方式2:
<insertid="insert"parameterType="cn.softsea.model.DicCity"useGeneratedKeys="true"keyProperty="id">
insert into Dic_City (City_Code, Provinces_Code,
State_Code, City_Name, PY_Code,
PY_Code_Short, Ext1, Ext2,
Ext3, Ext4, Ext5)
values (#{cityCode,jdbcType=VARCHAR}, #{provincesCode,jdbcType=VARCHAR},
#{stateCode,jdbcType=VARCHAR}, #{cityName,jdbcType=VARCHAR}, #{pyCode,jdbcType=VARCHAR},
#{pyCodeShort,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR},
#{ext3,jdbcType=VARCHAR}, #{ext4,jdbcType=VARCHAR}, #{ext5,jdbcType=VARCHAR})
</insert>

调用Mapper返回主键:
//生成新对象用于插入
DicCitycity=newDicCity();
city.setCityCode("330100");
city.setCityName("杭州市");

//获取mapper对象
DicCityMappercityMapper=(DicCityMapper)SpringContextUtil.getBean("dicCityMapper");

introw=cityMapper.insert(city);//insrt不再返回主键,只返回响应行数,这点和ibatis不同了

System.out.println("响应的行数:"+row);
//取得自增的标识列 ID的值
System.out.println("新插入的数据的ID:"+city.getId());

====================

如果使用mybatis.generator来生成DAO层的话,generatorConfig.xml中要使用:

<generatedKeycolumn="id"sqlStatement="MySql"identity="true"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值