`

ibatis selectKey 配置

阅读更多

<!--  My sql SEQUENCE-->   
 <insert   id="insertUser-MY-SQL"   parameterClass="user">   
       INSERT   INTO   T_USER   (name, sex) VALUES (#name#,#sex#)   
       <selectKey   resultClass="int"   keyProperty="id" >   
           SELECT   LAST_INSERT_ID() as id  
       </selectKey>   
 </insert> 
 
 <!-- Oracle SEQUENCE  -->   
 <insert id="insertUser-ORACLE" parameterClass="user">    
 <selectKey resultClass="int" keyProperty="id" type="pre">    
 <![CDATA[
 SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
 ]]>  
 </selectKey> 
 <![CDATA[
 INSERT INTO t_user(id,name,sex)VALUES(#id#,#name#,#sex#)
 ]]>
 </insert> 
 
 <!-- Microsoft SQL Server IDENTITY Column -->    
 <insert  id="insertUser-MS-SQL" parameterClass="user ">    
 <![CDATA[
 INSERT   INTO   T_USER   (name, sex) VALUES   (#name#,#sex#)  
 ]]>    
 <selectKey resultClass="int" keyProperty="id" type="post">    
 <![CDATA[
 SELECT @@IDENTITY AS ID 
 ]]> 
 <!-- 该方法不安全 应当用SCOPE_IDENTITY() 但这个函数属于域函数,需要在一个语句块中执行。 -->  
 </selectKey>    
 </insert> 
 
 <!-- Microsoft SQL Server IDENTITY Column 改进-->    
 <insert id="insertUser-MS-SQL" parameterClass="user">    
 <selectKey resultClass="int" keyProperty="id">    
 <![CDATA[
 INSERT   INTO   T_USER   (name, sex) VALUES   (#name#,#sex#)   
    SELECT SCOPE_IDENTITY() AS ID 
 ]]>  
 </selectKey>    
 </insert> 
----------------------------------------------------------------------------------------------------------------------------

以sql server为例,举个实例:

配置文件中:

<insert id="saveProject" parameterClass="ProjectVO" >
  <selectKey resultClass="java.lang.Integer" keyProperty="projectId">  
  <![CDATA[
  insert into PROJECT(projectName,description)
  values(#projectName#,#description#) 
  SELECT SCOPE_IDENTITY() AS projectId
  ]]>
 </selectKey>
 </insert> 

 

DaoImpl中代码:

 public Integer saveProject(ProjectVO projectVO){
  return (Integer)getSqlMapClientTemplate().insert("commonMap.saveProject", projectVO);
 }

分享到:
评论

相关推荐

    ibatis 中sqlMap配置

    对于序列主键(如Oracle、DB2中的Sequence),需要在插入语句之前配置`&lt;selectKey&gt;`标签来获取主键值。例如: ```xml &lt;selectKey resultClass="long" keyProperty="sctId"&gt; SELECT SEQ_TEST.NEXTVAL FROM DUAL...

    常用ibatis配置

    在iBatis中,可以使用&lt;selectKey&gt;标签来获取插入记录后的自增ID。例如,文档中显示的是在插入数据后,通过调用数据库的IDENTITY函数获取自增ID值,这个值被设置到resultClass为int类型的keyProperty“id”中。 2. ...

    ibatis_sqlMap的配置总结

    &lt;selectKey resultClass="long" keyProperty="sctId"&gt; SELECT SEQ_TEST.NEXTVAL FROM DUAL &lt;/selectKey&gt; insert into ... ``` 对于MySQL这样的自增主键数据库,则可以在插入语句之后通过`LAST_INSERT_ID()`来...

    iBatis_SqlMap的配置总结[1]

    - **后获取主键**:对于自动增长的主键,如MySQL,`&lt;selectKey&gt;`可以在插入语句之后配置,利用`LAST_INSERT_ID()`获取自增主键。 5. **SQL参数(ParameterClass)**: - 插入操作:`parameterClass`指定传入参数...

    ibatis 缓存配置策略

    iBatis 缓存配置策略是提高数据库查询性能的关键手段之一。iBatis 提供了本地缓存机制,用于存储查询结果集,减少不必要的数据库访问。以下是对iBatis缓存配置策略的深入解析: 首先,iBatis 的 Cache 键(key)是...

    ibatis环境搭建教程

    - **&lt;selectKey&gt;`**:用于生成主键,在某些数据库中可能需要在插入记录前先获取自增主键值。 - **&lt;insert&gt;`**:定义插入操作,可以与`parameterMap`结合使用以支持复杂的参数传递。 - **&lt;resultClass&gt;`**:定义查询...

    ibatis批处理

    此外,`&lt;selectKey&gt;`标签用于在插入后获取自增主键的值,这对于某些数据库系统(如MySQL)是必要的。 总的来说,iBatis的批处理功能通过在代码和配置文件中灵活运用循环,使得开发者能够有效地处理大批量数据操作,...

    Ibatis框架的核心知识点

    对于支持自动生成主键的数据库,Ibatis 提供了 `&lt;selectKey&gt;` 元素来获取新生成的主键值。在插入语句中,`&lt;selectKey&gt;` 通常置于 `&lt;insert&gt;` 元素内,用于在插入数据后获取数据库生成的主键。例如,对于Oracle,...

    ibatis技术总结

    13. **&lt;selectKey&gt;**:定义主键生成策略,常用于自动填充主键字段。 这些标签共同构成了iBatis的SQL映射规则体系,确保了框架能够正确执行各种数据库操作。 #### 7. SQL参数详解 iBatis支持多种类型的SQL参数,...

    spring+ibatis集成文档

    接下来是iBatis的配置文件`sqlMapConfig.xml`,它指定了SQL映射文件的位置: ```xml &lt;!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" ...

    iBATIS有关资料

    对于主键自动赋值,iBATIS提供了`&lt;selectKey&gt;`标签来处理。在Oracle中,我们可以这样实现: ```xml &lt;selectKey keyProperty="id" resultClass="int"&gt; SELECT STU_SEQ.NEXTVAL FROM DUAL &lt;/selectKey&gt; INSERT ...

    iBATIS入门实例测试

    总结,iBATIS作为一个强大的持久层框架,通过XML配置文件和Java接口,实现了数据库操作的简洁化和灵活性。通过上述步骤,你已经了解了如何设置iBATIS环境,编写SQL映射文件,以及如何在Java代码中调用这些映射进行...

    原创的一个iBatis例子

    PRIMARY KEY (ID) ); insert into PERSON values (1,'ng','Huang'); insert into PERSON values (2,'zh','Ni'); insert into PERSON values (3,'zy','Huang'); src下有三个目录: ibator/config:配置文件,其中...

    08_传智播客ibatis教程_sql主键生成方式

    在Ibatis配置中,可以通过`&lt;selectKey&gt;`标签来指定使用序列生成主键。 2. **身份列(Identity)**:在MySQL、SQL Server等支持自动增长的数据库中,可以设置某一列为主键并自动递增。在Ibatis中,可以在插入语句后...

    ibatis_数据缓存

    值得注意的是,iBatis并不是以查询参数的Class的hashcode或toString方法作为Key的一部分,而是使用在sqlmap中使用的变量集合。 **缓存功能** - iBatis 支持`queryForObject`和`queryForList`方法的结果缓存,但其他...

    iBATIS DataMapper1.6 中文翻译

    在这个例子中,`&lt;insert&gt;`标签定义了一个插入操作,参数类为`LineItem`,并包含了主键获取的`&lt;selectKey&gt;`标签。通过`Mapper.Instance().Insert()`方法调用,可以完成插入操作并返回主键值。 总的来说,iBATIS ...

    Ibatis简易教程

    在iBatis的简易教程中,我们将通过三个例子来逐步理解如何配置和使用iBatis。首先,我们需要创建数据库和对应的表。在本例中,我们使用MySQL 5.0,并创建了一个名为`contact`的表,包含`contactid`、`firstName`、`...

    ibatis PPT

    对于自动增长的主键,iBatis 提供了 `&lt;selectKey&gt;` 标签来处理。在插入数据后,这个标签会执行一个单独的 SELECT 语句来获取新生成的主键值,并将其绑定到 Java 对象的相应属性上。 **优点** iBatis 的优点包括: 1...

    ibatis讲义

    - iBatis 支持通过 `&lt;selectKey&gt;` 元素来自动生成主键值。 - 示例代码: ```xml insert into table_name (name, age) values (#{name}, #{age}) &lt;selectKey resultClass="int"&gt; SELECT LAST_INSERT_ID() // ...

Global site tag (gtag.js) - Google Analytics