- 浏览: 932313 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (251)
- WebService (17)
- IBatis (22)
- Hibernate (1)
- SpringMVC - 基础篇 (32)
- Spring (15)
- Java (11)
- JVM及调优 - 基础篇 (4)
- 集群 (14)
- 数据库 (17)
- WebSphere (5)
- 多线程 (4)
- 集合、容器 (2)
- DB Pool (1)
- Power Designer (5)
- Maven基础 (5)
- JS (14)
- WEB 前端 (5)
- 实用小工具 (17)
- 社会、人 (2)
- 乱七八糟 (18)
- ASM&CGLIB - 基础篇 (12)
- 缓存 (1)
- 性能 (1)
- 设计之殇 (1)
- 分布式事务 (1)
- 单点登录 (11)
- 分布式 Session (4)
- Memcached - 基础篇 (6)
最新评论
-
一笑_奈何:
楼主写的还真行不错。
扫盲贴 - J2EE集群之JNDI集群实现 -
xuezhongyu01:
博主写的很详细,但最后还是没明白,最后调用BasicDataS ...
Spring中的destroy-method方法 -
Mr梁:
commons-fileupload.jar commons- ...
SpringMVC 中文件上传 MultipartResolver -
Eywa:
总结的很不错
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 -
TryRelax:
fastjson 比 jackson 好用吧?
Spring MVC Jackson DateFormat
insert,update,delete 返回值
insert 返回的为插入的主键值,但必须在配置文件中加入 <selectKey/>
iBATIS三种自动生成主键的方式
<!-- Oracle SEQUENCE Example using .NET 1.1 System.Data.OracleClient --> < insert id = "insertProduct-ORACLE" parameterClass = "product" > < selectKey resultClass = "int" type = "pre" keyProperty = "id" > SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE 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" type = "post" keyProperty = "id" > select @@IDENTITY as value </ selectKey > </ insert > <!-- MySQL Example --> < insert id = "insertProduct-MYSQL" parameterClass = "product" > insert into PRODUCT (PRD_DESCRIPTION) values (#description#) < selectKey resultClass = "int" type = "post" keyProperty = "id" > select LAST_INSERT_ID() as value </ selectKey > </ insert >
如果主键值为 String
< selectKey resultClass = "String" keyProperty = "resourceId" >
<![CDATA[
select resource_id as resourceId from rentout where resource_id=#resourceId#
]]>
</ selectKey >
如果主键值为 Int 型
< selectKey resultClass = "Integer" keyProperty = "id" >
<![CDATA[
Select last_insert_id();
]]>
</ selectKey >
Update, 和 Delete 返回为修改数据影响的条数;
SQL 注入
a. 在关键字传入前加‘%’; 例: String keyword=”%”+keyword+”%”;
b 、过滤关键字中的非法字符
公共 SQL 提取的运用在 <sql></sql> 中包含需要复用的 SQL 语句,在需要的地方 <include refid=””/> 引入即可
ResultClass 和 ResultMap 的区别
resultClass: 可以把结果自动映射到相应的 JAVA 类中,但无法指定输出字段的类型,会对性能产生轻微的影响。
resultMap: 可以预先定义 resultMap 元素,可以控制数据如何从结果集中取出,以及哪个属性匹配哪个字段,
parameterClass 和 parameterMap 的区别
parameterClass 属性值是 JAVA 类的全限定名,目的是限制输入参数的类型为指定的 JAVA 类,如果不指定,任何带有合适属性( get/set 方法)的 JAVA BEAN 都可以作为输入参数
parameterMap: 预先定义 parameterMap 的属性值,用于有次序的参数匹配 JDBC 符号
“ # ”和“ $ ”的区别
“ # ” 为占为符
“ $ ”为直接替换,但为出现 SQL 引入问题和性能上的影响, like,limit 和表名的引入必须使用“ $ ”
分页功能的实现
a. 用 ibatis 自带的分页功能,但是自带分页是把所有数据读入内存再分页的,所以必须自己覆写 LimitSqlExecutor 方法,
b. 直接使用 limit 实现
where 条件的组装
<isEqual> 比较属性值和静态值或另一个属性值是否相等
<idNotEqual> 比较属性值和静态值或另一个属性值是否不相等
<isGreaterThan> 比较属性值是否大于静态值或另一个属性值
<isGreaterEqual> 比较属性值是否大于等于静态值或另一个属性值
<isLessThan> 比较属性值是否小于静态值或另一个属性值
<isLessEqual> 比较属性值是否小于等于静态值或另一个属性值
<isNull> 检查属性是否为 NULL
<isNotNull> 检查属性是否不为 NULL
<isEmpty> 检查属性是否为 NULL 或空
<isNotEmpty> 检查属性是否不为 NULL 或不为空
<isPropertyAvailable> 检查是否存在该属性
<isNotPropertyAvailable> 检查是否不存在该属性
<![CDATA[ ]]> 的含义
用了特殊字符的 SQL 语句不能直接使用。必须用 <![CDATA[ ]]>
ibatis 自带缓存的运用
<cacheModel id=”person-cache” implementation=”LRU”>
<flushInterval hours=”24”/> // 可以用 hours/minutes/second
<flushOnExecute statement=”selectperson”/> // 需要缓存的方法,可以为多个
<property name=”size” value=”1000”/>
</cacheModel>
缓存策略:
LRU :最近最少使用
MEMORY :适用于没有统一的对象重用模式, property 的属性值必须是 STRONG ,
SOFT , WEAK ,这三个值分别对应于 JVM 不同内存 reference 类型。
WEAK, 大多数情况下, WEAK 是最佳选择,缺省值就是 WEAK ,它能大大提高常用查询的性能,对于当前不被使用的查询数据,将被清除
SOFT ,在查询结果对象不被使用,可以减少内存不足的可能性
STRONG ,对查询的结果一直保留在内存中,可以使用在数据量很少或者静态数据的时
FIFO :先进先出
OSCACHE :配置 oscache.properties
value 的使用
假如没有必要写 JAVA BEAN 作为参数,可以直接使用基本类型,也可以直接传入参数值。如果是直接传入参数值就配置文件中必须写 #value# 做为参数传入
iterate 在 ibatis 里的运用
<iterate perpend=”AND” property=”stringList” open=”(” close=”)” conjunction=”OR”>
<![CDATA[
Username=#stringList[]#
]]>
</iterate>
List 参数名后面一定要加“ [] ”,防止解析器简单的把 List 解析成 String
结果: username=(1 or 2 or 3)
事务的处理 startTransacton();
commitTransaction();
rollbackTransaction();
批处理 如果有很多非查询的( insert/update/delete )语句要处理,为了减少网络通讯的流量,可以进行批处理
sqlMapClientTemplate.execute(new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor)throws SQLException {
executor.startBatch();
for(PrjPiValues prjPiValue : prjPiValues){
sqlMapClientTemplate.insert("PrjPiValues.insertPrjPiValues", prjPiValue);
}
executor.executeBatch();
return null;
}
});
xmlResultName 的运用 详细输出结果
直接把查存出来的结果映射成 XML document
<select id=”getPerson” parameterClass=”int” resultClass=”xml” xmlResultName=”person”>
Select id as id,name as name from person where id=#value#;
</select>
结果:返回的为 XML 格式的字符串( String )
<xmlversion="1.0"encoding="UTF-8"/>
<person >
<id>2</id>
<name>2222</name>
</ person >
xmlResultName 属性值为根目录名
发表评论
-
iBATIS缓存
2011-12-12 21:33 1165为了提高应用程序性 ... -
iBatis批处理(batch)
2011-09-05 23:47 6957spring集成了ibatis的批量提交的功能,我们只要调用A ... -
一个Spring+iBatis框架进行batch处理的问题
2011-09-05 23:23 1623在使用org.springframework.jdbc.dat ... -
ibatis 之 动态SQL查询(dynamic )
2011-06-12 12:13 2288映射文件: <select id=" ... -
ibatis 之 复杂类型集合的属性
2011-06-12 12:10 2149Result Map还可以装入代表复杂类型对象集合(List) ... -
ibatis 之 复杂类型属性(即自定义类型的属性)
2011-06-12 11:54 3451复杂类型用以表示在数 ... -
ibatis 之 java.util.Map作为parameterClass和resultClass
2011-06-12 11:21 51641.Map作为parameterClass 映射 ... -
ibatis Tips 之 resultMap
2011-05-29 21:04 1210转载:http://xulongfa.iteye.com/bl ... -
ibatis Tips之parameterMap
2011-05-29 21:03 1343转载:http://xulongfa.iteye.com/bl ... -
iBatis查询API
2011-05-29 12:34 1856转载:http://sarin.iteye.com/blog/ ... -
iBatis查询select详解
2011-05-29 12:20 2218转载:http://sarin.iteye.com/blog/ ... -
ibatis 表与表的关联查询
2011-05-22 15:04 1266ibatis高级特性,处理表与表之间的关联。ibatis中,提 ... -
ibatis 动态映射机制
2011-05-22 14:15 1458对于这个组合查询页 ... -
sqlMapConfig.xml配置文件详解
2011-05-22 13:04 3554sqlMapConfig.xml配置文件详解: X ... -
ibatis缓存
2011-05-22 12:52 1364iBatis的缓存配置比较简单易懂,以我使用的iBati ... -
ibatis resultclass "java.util.hashmap" 缓存问题
2011-05-22 12:13 1523在做ibatis项目过程中遇到如下样式动态查询 <se ... -
ibatis # $区别
2011-05-22 11:55 14391、#可以进行预编译,进行类型匹配,#变量名# 会转化为 j ... -
iBATIS入门示例及注释
2011-05-08 18:20 1798工程的结构: 一、SqlMapConf ... -
iBATIS 三个版本小细节对比
2011-05-08 16:12 1205iBATIS 三个版本小细节对比 sqlMapConfig ... -
深入分析 iBATIS 框架之系统架构与映射原理
2011-05-07 12:48 1222原文:http://www.ibm.com/developer ...
相关推荐
在"ibatis demo"中,我们通常会看到以下核心概念和知识点: 1. **配置文件**:Ibatis的配置文件(mybatis-config.xml)是整个框架的入口,它包含了数据源、事务管理器、SqlSessionFactory等重要设置。数据源定义了...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的编写。Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的...
自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...
5. **注意事项**: - 确保数据库驱动支持批量更新功能。 - 调整JDBC连接设置中的批处理大小,以优化性能。 - 测试不同批量大小对性能的影响,找到最佳批量大小。 6. **性能优化**: - 减少网络传输开销,尽可能...
关于从文档复制代码的问题,以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与...
在使用Ibatis 2.3.4版本时,需要注意的是,虽然这是一个较老的版本,但它已经足够稳定,能满足大部分基本需求。然而,对于新的项目,可能需要考虑升级到Ibatis的最新版本(目前是3.x),以利用其更丰富的特性,如...
标题 "iBatis" 涉及到的知识点主要集中在两个核心领域:iBatis框架本身和它与Spring框架的整合。以下是对这些知识点的详细解释: 1. iBatis框架: - iBatis是一个优秀的持久层框架,它允许程序员将SQL语句直接写在...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写动态的SQL上,而无需关注JDBC代码的繁琐细节。这个"ibatis小例子Demo"是为了帮助初学者快速理解和掌握...
尽管手动拼接 SQL 字符串是一种简单有效的方法,但在实际项目中还应注意以下几点: 1. **安全性**:使用预编译语句(PreparedStatement)来避免 SQL 注入等问题。 2. **性能优化**:对于频繁执行的 SQL 语句,可以...
在实际开发中,一定要注意数据编码的一致性,从数据库到应用程序,再到用户界面,每个环节都要做好编码的匹配和转换工作。对于`ibatisdemo`这个项目,你可以按照上述方法检查并调整项目的配置,以解决可能出现的乱码...
Ibatis 提供了对象与 SQL 语句之间的映射机制,使得开发者可以将注意力集中在业务逻辑上,而不是繁琐的数据库操作上。 Ibatis 的主要特点和优势在于: 1. 基于 SQL 语法,学习曲线平缓,对于熟悉 SQL 的开发者来说...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责简化数据库操作,使得开发者能够将注意力集中在SQL语句的编写上,而无需过多关注底层的JDBC代码。Ibatis的核心思想是将SQL语句与Java代码分离,通过...
在使用iBATIS3时,需要注意以下几点: - **命名空间**:每个映射文件都应该有一个唯一的命名空间,用于区分不同的映射文件,避免命名冲突。 - **生命周期管理**:正确管理`SqlSessionFactory`和`SqlSession`的生命...
- 合理利用缓存,但要注意数据一致性问题。 - 了解并掌握iBatis的事务管理,根据应用需求选择合适的事务隔离级别。 通过阅读和理解iBatis 2.3的源码,开发者可以更深入地了解数据库访问的底层实现,提高代码质量...
不过需要注意,iBatis已经发展到了3.x版本,2.0版本的部分特性可能在新的版本中已经被优化或废弃,学习时应结合当前版本的官方文档进行参考。 总之,《iBatis 2.0 开发指南》是一份宝贵的资源,无论你是初学者还是...
- 动态SQL的最佳实践:分享编写高效动态SQL的技巧和注意事项。 通过深入学习这些文档,开发者可以熟练掌握iBATIS.NET,实现高效、灵活的数据访问,同时减少因为SQL语句硬编码在代码中而带来的维护难题。iBATIS的...
在进行批处理时,还需要注意以下几点: - **错误处理**:如果批处理中的某个操作失败,通常可以选择回滚整个事务,以保持数据的一致性。 - **性能优化**:批量操作的数据量不宜过大,避免一次性加载过多数据导致内存...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的繁琐操作。Ibatis通过XML或注解方式定义和配置SQL,提供了一个简单易用...
9. **升级指南**:针对从旧版本升级到iBatis 3.1的用户,提供了详细的迁移步骤和注意事项。 通过深入阅读并实践《iBatis 3.1 官方中文帮助文档》,开发者不仅可以熟练掌握iBatis框架,还能更好地理解和运用SQL,...