前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IBatisNet 之 自动生成主关键字

IBatisNet 之 自动生成主关键字

作者头像
张善友
发布2018-01-19 14:33:35
5800
发布2018-01-19 14:33:35
举报
文章被收录于专栏:张善友的专栏

很多系统支持自动生成主关键字。一些数据库厂商预先生成(oracle),一些数据库厂商之后生成(mssal mysql).。如果你在<insert>元素中使用<selectKey>节,你就能获得一个预先生成的key.。下面的例子演示了这种方法:

<!—Oracle SEQUENCE Example --> <insert id="insertProduct-ORACLE"        parameterClass="product">       <selectKey resultClass="int"       Property="id" > SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL         </selectKey> insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values         (#id#,#description#) </insert>   <!— Microsoft SQL Server IDENTITY Column Example --> <insert id="insertProduct-MS-SQL"         parameterClass="product"> insert into PRODUCT (PRD_DESCRIPTION)         values (#description#) <selectKey resultClass="int"         Property="id" > SELECT @@IDENTITY AS ID </selectKey>         </insert>

上面是IbatisNet的iBATIS Data Mapper Developer Guide上的说明:下面来介绍一下具体的应用和注意的地方: person.xml

代码语言:js
复制

?xml version="1.0" encoding="utf-8" ?> 
<sqlMap 
 namespace="Person" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:noNamespaceSchemaLocation="SqlMap.xsd"> 
 <!-- XML "behind" document for the People service class. -->
 <alias> 
  <typeAlias alias="Person" type="IbatisTest.Domain.Person, IbatisTest.Domain" /> 
 </alias> 
 
 <resultMaps> 
  <resultMap id="SelectResult" class="Person"> 
   <result property="Id" column="PER_ID" /> 
   <result property="FirstName" column="PER_FIRST_NAME" /> 
   <result property="LastName" column="PER_LAST_NAME" /> 
   <result property="BirthDate" column="PER_BIRTH_DATE" /> 
   <result property="WeightInKilograms" column="PER_WEIGHT_KG" /> 
   <result property="HeightInMeters" column="PER_HEIGHT_M" /> 
  </resultMap> 
 </resultMaps> 
 
  <insert id="Insert" parameterClass="Person"> 
   insert into PERSON 
    (PER_FIRST_NAME, PER_LAST_NAME, 
    PER_BIRTH_DATE, PER_WEIGHT_KG, PER_HEIGHT_M) 
   values 
    ( #FirstName#, #LastName#, 
    #BirthDate#, #WeightInKilograms#, #HeightInMeters#) 
   <selectKey property="Id" type="post" resultClass="int">  
   select CAST(@@IDENTITY as int) as value 
   </selectKey>  
  </insert>     
   </statements> 
 
</sqlMap>  
<selectKey>节返回一个从sql server生成的自动生成关键字。 
 //新增一个员工 
 private void Button1_Click(object sender, System.EventArgs e) 
          { 
 IbatisTest.Domain.Person person = new IbatisTest.Domain.Person(); 
  person.Id =-1;//这里的赋值很重要,否则会出错
              person.FirstName = "--New Person--"; 
 person.BirthDate = Convert.ToDateTime("2000-4-2");  
 PersonHelper personhelper = new PersonHelper(); 
  personhelper.Insert(person); 
 } 

          //业务逻辑类方法
          public int Insert (Person person) 
          {
  try
              { 
  int result = -1; 
   result =(int)Mapper().Insert("Insert",person); 
  return result; 
 }
  catch(Exception ex) 
 { 
  throw ex; 
 } 
 } 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2005-10-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档