`

iBATIS非查询标签2

阅读更多

继续iBATIS非查询标签

 

1 自动生成的键<selectKey>

每个插入的记录都会生成一个主键用于区分不同的记录,在各种数据库里提供了不同生成主键的方式,iBATIS很好地解决了重复取得同一键值的问题

Xml代码 复制代码
  1. <!-- 自动生成的键  -->     
  2.     <insert id="insertOneUser" parameterClass="User">  
  3.         INSERT INTO USER   
  4.         (    
  5.             USERID,USERNAME, PASSWORD, DEPARTMENT   
  6.         )VALUES(   
  7.             #userid#,   
  8.             #username#,   
  9.             #password#,   
  10.             #department#     
  11.         )   
  12.         <selectKey      
  13.             keyProperty="userid"  
  14.             resultClass="int">  
  15.             SELECT LAST_INSERT_ID()            
  16.         </selectKey>  
  17.     </insert>   
<!--	自动生成的键	-->	
	<insert id="insertOneUser" parameterClass="User">
		INSERT INTO USER
		( 
			USERID,USERNAME, PASSWORD, DEPARTMENT
		)VALUES(
			#userid#,
			#username#,
			#password#,
			#department#  
		)
		<selectKey	
			keyProperty="userid"
			resultClass="int">
			SELECT LAST_INSERT_ID() 		
		</selectKey>
	</insert>	

 

keyProperty 那个对应数据库里对应主键的属性,resultClass返回的类型,SELECT LAST_INSERT_ID() 获得键值的方法,不同的数据库方法不同

Xml代码 复制代码
  1. <  
  2. !—Oracle SEQUENCE Example -->  
  3. <insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">  
  4. <selectKey resultClass="int" keyProperty="id" >  
  5. SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL   
  6. </selectKey>  
  7. insert into PRODUCT (PRD_ID,PRD_DESCRIPTION)   
  8. values (#id#,#description#)   
  9. </insert>  
  10. <!— Microsoft SQL Server IDENTITY Column Example -->  
  11. <insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">  
  12. insert into PRODUCT (PRD_DESCRIPTION)   
  13. values (#description#)   
  14. <selectKey resultClass="int" keyProperty="id" >  
  15. SELECT @@IDENTITY AS ID   
  16. </selectKey>  
  17. </insert>  
<
!—Oracle SEQUENCE Example -->
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="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="com.domain.Product">
insert into PRODUCT (PRD_DESCRIPTION)
values (#description#)
<selectKey resultClass="int" keyProperty="id" >
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
Xml代码 复制代码
  1. insert语句可以放在主键生成之前也可以放在之后  
insert语句可以放在主键生成之前也可以放在之后

 Integer returnValue=(Integer)sqlMap.insert("insertOneUser",user) 可以返回插入的主键

 

2 存储过程

 

在使用的数据库里已有生成的存储过程,配置文件里配置如下:

Xml代码 复制代码
  1. <!-- 存储过程    -->         
  2.     <parameterMap id="pro" class="java.util.Map">  
  3.         <parameter property="name" jdbcType="VARCHAR"    
  4.              javaType="string" mode="IN"/>  
  5.     </parameterMap>  
  6.     <procedure id="pro_insert" parameterMap="pro">  
  7.         {call new_proc(?)}   
  8.     </procedure>  
<!--	存储过程	-->		
	<parameterMap id="pro" class="java.util.Map">
		<parameter property="name" jdbcType="VARCHAR" 
		     javaType="string" mode="IN"/>
	</parameterMap>
	<procedure id="pro_insert" parameterMap="pro">
		{call new_proc(?)}
	</procedure>

 

 

new_proc为已定义好的存储过程名,用call调用,传入一个参数就传一个?

测试类:

Java代码 复制代码
  1. //调用存储过程   
  2. Map m=new HashMap(1);   
  3.  m.put("name"new String("LISI"));   
  4. sqlMap.update("pro_insert",m);   
  5. Integer i=(Integer)sqlMap.queryForObject("pro_insert",m);  
//调用存储过程
Map m=new HashMap(1);
 m.put("name", new String("LISI"));
sqlMap.update("pro_insert",m);
Integer i=(Integer)sqlMap.queryForObject("pro_insert",m);

 

3 批量处理

一次将多条语句提交给数据库而不是一条一条提交,可以提升优势和性能

Java代码 复制代码
  1. sqlMap.startBatch();   
  2.                
  3.             sqlMap.insert("insertOneUser",user1);   
  4.             sqlMap.insert("insertOneUser",user2);   
  5.                
  6.             sqlMap.executeBatch();  
分享到:
评论

相关推荐

    ibatis动态SQL标签用法

    iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的...

    iBATIS动态标签

    iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...

    Ibatis复杂查询语句.doc

    2. **子查询**: - 在这个查询中,有多个子查询用于获取特定的ID集合。例如,从`MEMBER_GROUP`表中筛选出符合特定条件的`GROUP_ID`,以及从`MEMBER_MEMBER_GROUP_REL`表中筛选出与用户相关的`GROUP_ID`。 3. **...

    ibatis标签

    标题中的“ibatis标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`&lt;iterate&gt;`标签是iBATIS提供的一个便利的循环...

    iBatis条件查询

    对于"ACCP Y2"这个标签,它可能指的是某种特定的课程或认证体系,可能是在学习路径的第二阶段介绍了iBatis的使用。而"iBaits按条件查询及分页功能"进一步强调了这个资源关注的重点,即利用iBatis实现基于用户输入...

    ibatis 文档查询

    【标签】:iBATIS、查询、映射、对象关系 【正文】: iBATIS作为一个轻量级的持久层框架,它在处理数据库查询方面具有强大的灵活性和便利性。在《iBATIS In Action》一书中,作者详细介绍了如何使用iBATIS进行高级...

    动态ibatis查询语句配置

    动态查询语句配置是Ibatis的一个重要特性,它允许我们在运行时根据业务需求构建灵活多变的SQL语句。这篇博文主要探讨的是如何在Ibatis中设置和使用动态SQL,以便实现更高效、更灵活的数据查询。 首先,我们需要理解...

    ibatis的动态查询

    ### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...

    ibatis 之分页

    2. **动态SQL**:Ibatis的动态SQL功能可以进一步优化分页查询。通过`&lt;if&gt;`、`&lt;choose&gt;`等标签,可以在SQL中根据条件动态插入分页语句,使得SQL更加灵活。 3. **PageHelper插件**:为了简化分页操作,社区开发了...

    ibatis多表查询过程

    在iBatis中,我们可以使用`&lt;select&gt;`标签来定义多表查询的SQL语句。 ### 3. 使用`&lt;include&gt;`标签 为了保持SQL语句的整洁和可重用性,可以使用`&lt;include&gt;`标签将公共部分的SQL语句提取出来。这样在多个查询中引用同...

    iBatis执行非查询语句(CRUD,函数和过程)

    这篇博客“iBatis执行非查询语句(CRUD,函数和过程)”深入探讨了如何在iBatis中执行创建、读取、更新和删除(CRUD)操作,以及调用数据库存储过程和函数。 一、iBatis简介 iBatis最初由MyBatis的创始人Clinton ...

    ibatis做连接查询 .doc

    注意,iBatis还支持动态SQL,这意味着你可以在XML配置文件中使用`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`等标签来根据条件动态构建SQL语句,这对于复杂的连接查询非常有用。 总的来说,iBatis提供了强大的SQL定制能力,使得...

    主子表查询ibatis

    2. **一对多查询SQL编写**: 在SQL脚本(如sql.sql文件)中,我们需要编写查询主表及所有子表记录的SQL语句。通常使用JOIN操作来实现关联查询,例如LEFT JOIN或INNER JOIN,将主表和子表通过共同的外键连接起来。在...

    ibatis总结 ibatis ibatis ibatis ibatis

    例如,`&lt;select&gt;`标签用于定义查询语句,`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`分别对应增删改操作。在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签。 ...

    ibatis and和or联合查询 .doc

    ### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...

    Ibatis查询语句里,可以使用多表查询

    2. **条件过滤**:通过 `&lt;dynamic&gt;` 标签实现了动态 SQL,根据传入的参数决定是否添加 WHERE 子句。 3. **排序**:通过 `$page.sortFieldName$` 实现动态排序字段的选择,并且支持正序或倒序。 4. **分页**:使用 `...

    Ibatis的简单例子(增删改查,联合查询等)

    在这个"Ibatis的简单例子"中,我们将探讨如何使用Ibatis进行数据库的增删改查(CRUD)操作以及联合查询。 1. **安装与配置**: 在开始之前,你需要在项目中添加Ibatis的依赖,通常是通过Maven或Gradle。在Maven的`...

    IBatis完成单表基本的数据库操作 模糊查询

    标题 "IBatis完成单表基本的数据库操作 模糊查询" 涉及到的是使用iBatis这个轻量级的持久层框架进行数据库的基本操作,特别是模糊查询。iBatis是一个优秀的SQL映射框架,它允许开发者将SQL语句与Java代码分离,提高...

    ibatis教程_查询指定id的单个对象

    在查询指定id的单个对象时,Ibatis提供了`&lt;select&gt;`标签,用于定义SQL查询。标签内可以设置id属性,对应Mapper接口中的方法名,resultType或resultMap属性则定义返回结果的类型或者映射关系。 ```xml SELECT * ...

Global site tag (gtag.js) - Google Analytics