- 浏览: 1047770 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
继续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>
<!-- 自动生成的键 --> <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>
< !—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>
<!-- 存储过程 --> <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);
//调用存储过程 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();
发表评论
-
list in传参 与批量插入 批量更新
2017-04-01 10:48 812传入一个map的参数,map里有一个tenantIds的Lis ... -
ibatis in ##的问题
2012-11-02 13:25 838http://www.hake.cc/a/biancheng/ ... -
ibatis缓存强制刷新与命中率
2012-10-19 19:06 1390缓存强制刷新: // spring注入 private Sq ... -
数据日志记录讨论
2011-10-26 18:51 949详情见附件中的PPT -
Ibatis的类型处理器TypeHandler解析
2011-10-24 16:28 3320原文来自: http://blog.csdn.net/lovi ... -
ibatis mysql 字段 tinyint(1) map应用要小心
2011-10-20 18:18 3995http://www.mysqlab.net/docs/ref ... -
spring+ibatis注解方式注入
2011-10-15 17:24 1022http://www.cnblogs.com/archie20 ... -
webwork+spring+ibatis注解培训文档
2011-08-15 17:26 1389今天整理了 spring 注解的使用,主要是结合公司 ... -
ibatis知识点收藏
2011-07-08 23:11 8911. 原来如此,所以在遍历之前要设置被跌代对象 h ... -
iBATIS自动生成主键
2011-07-08 22:50 990我们在数据库插入一条 ... -
ibatis配置log4j输出sql语句等日志信息
2011-07-08 22:47 1601总结步骤如下: 建立一个log4j.properties文 ... -
iBATIS一对多/多对多N+1问题解决方案
2011-07-08 22:30 1203对于iBATIS一对多/多对多的问题,传统的办法是在一对多/多 ... -
强制刷新Ibatis中的缓存(OSCache)
2011-07-08 22:21 1445持久层使用Ibatis,并开启动缓存 后台画面可用如下代码强制 ... -
让sqlmap文件 "继承" 起来
2011-07-08 22:18 1445多个项目中使用ibatis , 和数据库表对应的 sqlmap ... -
Ibatis比较少人使用的配置语法
2011-07-08 22:12 1645简单来说,ibatis3虽然没有ognl,不过也支持基本的表达 ... -
ibatis查询返回java.util.HashMap结果列表
2011-07-08 22:00 8207DAO的实现类中的代码: Java代码 ... -
ibatis使用总结(转)
2011-05-27 23:21 1554SqlMap的配置是iBatis中应 ... -
ibatis配置详解
2011-05-27 10:26 1116ibatis配置详解 ibatis与hi ... -
ibatis配置文件的namespace
2011-05-27 10:20 2903ibatis的配置文件中有一个命名空间的属性,如<sql ... -
ibatis配置多表关联(一对一、一对多、多对多)
2011-05-27 08:41 1348iBatis的多表关联。 ibatis的表关联,和数据库语句 ...
相关推荐
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 * ...