继续iBATIS非查询标签
1 自动生成的键<selectKey>
每个插入的记录都会生成一个主键用于区分不同的记录,在各种数据库里提供了不同生成主键的方式,iBATIS很好地解决了重复取得同一键值的问题
<!-- 自动生成的键 -->
<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() 获得键值的方法,不同的数据库方法不同
<
!—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>
insert语句可以放在主键生成之前也可以放在之后
Integer returnValue=(Integer)sqlMap.insert("insertOneUser",user) 可以返回插入的主键
2 存储过程
在使用的数据库里已有生成的存储过程,配置文件里配置如下:
<!-- 存储过程 -->
<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调用,传入一个参数就传一个?
测试类:
//调用存储过程
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 批量处理
一次将多条语句提交给数据库而不是一条一条提交,可以提升优势和性能
sqlMap.startBatch();
sqlMap.insert("insertOneUser",user1);
sqlMap.insert("insertOneUser",user2);
sqlMap.executeBatch();
#结束
分享到:
相关推荐
iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的...
iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...
2. **子查询**: - 在这个查询中,有多个子查询用于获取特定的ID集合。例如,从`MEMBER_GROUP`表中筛选出符合特定条件的`GROUP_ID`,以及从`MEMBER_MEMBER_GROUP_REL`表中筛选出与用户相关的`GROUP_ID`。 3. **...
标题中的“ibatis标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`<iterate>`标签是iBATIS提供的一个便利的循环...
对于"ACCP Y2"这个标签,它可能指的是某种特定的课程或认证体系,可能是在学习路径的第二阶段介绍了iBatis的使用。而"iBaits按条件查询及分页功能"进一步强调了这个资源关注的重点,即利用iBatis实现基于用户输入...
【标签】:iBATIS、查询、映射、对象关系 【正文】: iBATIS作为一个轻量级的持久层框架,它在处理数据库查询方面具有强大的灵活性和便利性。在《iBATIS In Action》一书中,作者详细介绍了如何使用iBATIS进行高级...
动态查询语句配置是Ibatis的一个重要特性,它允许我们在运行时根据业务需求构建灵活多变的SQL语句。这篇博文主要探讨的是如何在Ibatis中设置和使用动态SQL,以便实现更高效、更灵活的数据查询。 首先,我们需要理解...
### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...
2. **动态SQL**:Ibatis的动态SQL功能可以进一步优化分页查询。通过`<if>`、`<choose>`等标签,可以在SQL中根据条件动态插入分页语句,使得SQL更加灵活。 3. **PageHelper插件**:为了简化分页操作,社区开发了...
在iBatis中,我们可以使用`<select>`标签来定义多表查询的SQL语句。 ### 3. 使用`<include>`标签 为了保持SQL语句的整洁和可重用性,可以使用`<include>`标签将公共部分的SQL语句提取出来。这样在多个查询中引用同...
这篇博客“iBatis执行非查询语句(CRUD,函数和过程)”深入探讨了如何在iBatis中执行创建、读取、更新和删除(CRUD)操作,以及调用数据库存储过程和函数。 一、iBatis简介 iBatis最初由MyBatis的创始人Clinton ...
注意,iBatis还支持动态SQL,这意味着你可以在XML配置文件中使用`<if>`、`<choose>`、`<when>`等标签来根据条件动态构建SQL语句,这对于复杂的连接查询非常有用。 总的来说,iBatis提供了强大的SQL定制能力,使得...
2. **一对多查询SQL编写**: 在SQL脚本(如sql.sql文件)中,我们需要编写查询主表及所有子表记录的SQL语句。通常使用JOIN操作来实现关联查询,例如LEFT JOIN或INNER JOIN,将主表和子表通过共同的外键连接起来。在...
例如,`<select>`标签用于定义查询语句,`<insert>`、`<update>`和`<delete>`分别对应增删改操作。在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签。 ...
### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...
2. **条件过滤**:通过 `<dynamic>` 标签实现了动态 SQL,根据传入的参数决定是否添加 WHERE 子句。 3. **排序**:通过 `$page.sortFieldName$` 实现动态排序字段的选择,并且支持正序或倒序。 4. **分页**:使用 `...
在这个"Ibatis的简单例子"中,我们将探讨如何使用Ibatis进行数据库的增删改查(CRUD)操作以及联合查询。 1. **安装与配置**: 在开始之前,你需要在项目中添加Ibatis的依赖,通常是通过Maven或Gradle。在Maven的`...
标题 "IBatis完成单表基本的数据库操作 模糊查询" 涉及到的是使用iBatis这个轻量级的持久层框架进行数据库的基本操作,特别是模糊查询。iBatis是一个优秀的SQL映射框架,它允许开发者将SQL语句与Java代码分离,提高...
在查询指定id的单个对象时,Ibatis提供了`<select>`标签,用于定义SQL查询。标签内可以设置id属性,对应Mapper接口中的方法名,resultType或resultMap属性则定义返回结果的类型或者映射关系。 ```xml SELECT * ...