- 浏览: 198268 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (140)
- 笑话 (2)
- Java (29)
- Php (8)
- Javascript (6)
- Jquery (3)
- html + css (5)
- 网站推荐 (0)
- Android (15)
- sqlite (1)
- 精品文章 (6)
- bq (0)
- struts2 (7)
- ibatis (4)
- linux (1)
- oracle (9)
- jsf (5)
- eclipse (2)
- mysql (0)
- hiberante (2)
- spring (7)
- exception (1)
- eclipse js插件 (1)
- 工作流 (0)
- 理财 (1)
- ext (1)
- ssl (6)
- https (5)
- 信息安全 (3)
- 设计模式 (0)
- 基本概念 (1)
- freemarker (1)
- ligerUI (1)
- html5 (1)
- 会计 (1)
- iReport (2)
- 会计知识 (0)
- car (1)
- maven (1)
- PowerDesigner (1)
最新评论
-
zcz123:
路过,帮踩踩!
SyntaxHighlighter使用方法[转] -
comesmiletoface:
原来一直在使用HWPF哎
Apache POI介绍 -
rjkfABC:
什么神仙,我看就是男人写出来的!
一个女程序员的征婚信息: -
zcz123:
在csdn上看过,不过这样女人估计是神仙
一个女程序员的征婚信息:
iBatis一些非见用法,基本上解决所有棘手问题,下面总结如下:
1、动态SQL片段
通过SQL片段达到代码复用
<!-- 动态条件分页查询 -->
<sql id="sql_count">
select count(*)
</sql>
<sql id="sql_select">
select *
</sql>
<sql id="sql_where">
from icp
<dynamic prepend="where">
<isNotEmpty prepend="and" property="name">
name like '%$name$%'
</isNotEmpty>
<isNotEmpty prepend="and" property="path">
path like '%path$%'
</isNotEmpty>
<isNotEmpty prepend="and" property="area_id">
area_id = #area_id#
</isNotEmpty>
<isNotEmpty prepend="and" property="hided">
hided = #hided#
</isNotEmpty>
</dynamic>
<dynamic prepend="">
<isNotNull property="_start">
<isNotNull property="_size">
limit #_start#, #_size#
</isNotNull>
</isNotNull>
</dynamic>
</sql>
<select id="findByParamsForCount" parameterClass="map" resultClass="int">
<include refid="sql_count"/>
<include refid="sql_where"/>
</select>
<select id="findByParams" parameterClass="map" resultMap="icp.result_base">
<include refid="sql_select"/>
<include refid="sql_where"/>
</select>
2、数字范围查询
所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段
<isNotEmpty prepend="and" property="_img_size_ge">
<![CDATA[
img_size >= #_img_size_ge#
]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="_img_size_lt">
<![CDATA[
img_size < #_img_size_lt#
]]>
</isNotEmpty>
多次使用一个参数也是允许的
<isNotEmpty prepend="and" property="_now">
<![CDATA[
execplantime >= #_now#
]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="_now">
<![CDATA[
closeplantime <= #_now#
]]>
</isNotEmpty>
3、时间范围查询
<isNotEmpty prepend="" property="_starttime">
<isNotEmpty prepend="and" property="_endtime">
<![CDATA[
createtime >= #_starttime#
and createtime < #_endtime#
]]>
</isNotEmpty>
</isNotEmpty>
4、in查询
<isNotEmpty prepend="and" property="_in_state">
state in ('$_in_state$')
</isNotEmpty>
5、like查询
<isNotEmpty prepend="and" property="chnameone">
(chnameone like '%$chnameone$%' or spellinitial like '%$chnameone$%')
</isNotEmpty>
<isNotEmpty prepend="and" property="chnametwo">
chnametwo like '%$chnametwo$%'
</isNotEmpty>
6、or条件
<isEqual prepend="and" property="_exeable" compareValue="N">
<![CDATA[
(t.finished='11' or t.failure=3)
]]>
</isEqual>
<isEqual prepend="and" property="_exeable" compareValue="Y">
<![CDATA[
t.finished in ('10','19') and t.failure<3
]]>
</isEqual>
7、where子查询
<isNotEmpty prepend="" property="exprogramcode">
<isNotEmpty prepend="" property="isRational">
<isEqual prepend="and" property="isRational" compareValue="N">
code not in
(select t.contentcode
from cms_ccm_programcontent t
where t.contenttype='MZNRLX_MA'
and t.programcode = #exprogramcode#)
</isEqual>
</isNotEmpty>
</isNotEmpty>
<select id="findByProgramcode" parameterClass="string" resultMap="cms_ccm_material.result">
select *
from cms_ccm_material
where code in
(select t.contentcode
from cms_ccm_programcontent t
where t.contenttype = 'MZNRLX_MA'
and programcode = #value#)
order by updatetime desc
</select>
9、函数的使用
<!-- 添加 -->
<insert id="insert" parameterClass="RuleMaster">
insert into rulemaster(
name,
createtime,
updatetime,
remark
) values (
#name#,
now(),
now(),
#remark#
)
<selectKey keyProperty="id" resultClass="long">
select LAST_INSERT_ID()
</selectKey>
</insert>
<!-- 更新 -->
<update id="update" parameterClass="RuleMaster">
update rulemaster set
name = #name#,
updatetime = now(),
remark = #remark#
where id = #id#
</update>
10、map结果集
<!-- 动态条件分页查询 -->
<sql id="sql_count">
select count(a.*)
</sql>
<sql id="sql_select">
select a.id vid,
a.img imgurl,
a.img_s imgfile,
b.vfilename vfilename,
b.name name,
c.id sid,
c.url url,
c.filename filename,
c.status status
</sql>
<sql id="sql_where">
From secfiles c, juji b, videoinfo a
where
a.id = b. videoid
and b.id = c.segmentid
and c.status = 0
order by a.id asc,b.id asc,c.sortnum asc
<dynamic prepend="">
<isNotNull property="_start">
<isNotNull property="_size">
limit #_start#, #_size#
</isNotNull>
</isNotNull>
</dynamic>
</sql>
<!-- 返回没有下载的记录总数 -->
<select id="getUndownFilesForCount" parameterClass="map" resultClass="int">
<include refid="sql_count"/>
<include refid="sql_where"/>
</select>
<!-- 返回没有下载的记录 -->
<select id="getUndownFiles" parameterClass="map" resultClass="java.util.HashMap">
<include refid="sql_select"/>
<include refid="sql_where"/>
</select>
注意:在使用Map作为结果集返回类型时候,必须这么设置结果集类型resultClass="java.util.HashMap",这时候,需要根据字段的名称来取值,值类型为Object,key类型为String,这点要注意了:
定义的DAO方法实现如下:
public List<Map<String,Object>> findUndownFiles(Map map) {
return getSqlMapClientTemplate().queryForList("secfiles.getUndownFiles", map);
}
通过DAO读取并操作Map结果集数据:
public void test_findUndownFiles() {
List<Map<String, Object>> co = ser.findUndownFiles(new HashMap());
StringBuilder s = new StringBuilder();
for (Map<String, Object> map : co) {
System.out.println("---------------------------");
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.print(entry.getKey()+"\t");
System.out.println(entry.getValue());
}
}
}
打印结果:
---------------------------
sid 1
vfilename 200905252009235799
url http://d18.v.iask.com/f/1/f47817a394730dc682e660b943e84cc41006606.flv
status 0
filename 200905252009235799-00.flv
imgfile 200905252009234399.jpg
vid 1
imgurl http://p4.v.iask.com/95/595/1757503_1.jpg
---------------------------
sid 2130
vfilename 2009062615063867492
url http://lz.dhot.v.iask.com/f/1/0ee2ae8b973988f6a93c071c8045ca5217266409.mp4
status 0
filename 2009062615063867492-00.mp4
imgfile 2009062615063825434.jpg
vid 93
imgurl http://cache.mars.sina.com.cn/nd/movievideo//thumb/2/1502_120160.jpg
---------------------------
sid 2131
vfilename 2009062615064184076
url http://lz5.dhot.v.iask.com/f/1/36d3dadacb8d6bda434a58e7418ad3cc19037464.flv
status 0
filename 2009062615064184076-00.flv
imgfile 2009062615064136733.jpg
vid 94
imgurl http://cache.mars.sina.com.cn/nd/movievideo//thumb/6/2106_120160.jpg
相关推荐
iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...
### 详细介绍Ibatis的用法 #### Ibatis概述与特点 Ibatis是一个开源的持久层框架,它通过简单的XML配置文件将JavaBean映射到SQL语句上,从而极大简化了对关系数据库的操作。与其他数据库持久层框架如JDO、...
**ibatis入门** iBatis,一款轻量级的Java持久层框架,是MyBatis的前身,由美国华人开发团队开发。它提供了一个SQL、Java和XML的映射框架,将SQL语句与Java代码...在实际项目中,熟练掌握iBatis能极大地提升开发效率。
在这个"iBatis Web用法实例"中,我们将深入探讨如何在Web项目中集成并使用iBatis,以及相关的最佳实践。 1. **iBatis 概述**: iBatis 作为轻量级的ORM(对象关系映射)框架,它的核心思想是将SQL与Java代码分离,...
Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...
### iBATIS缓存的使用方法 在数据库访问框架iBATIS中,缓存机制是一项重要的功能,它能够显著提高应用程序的性能。本文将详细介绍iBATIS中的缓存使用方法,包括缓存模型的配置、不同类型的缓存控制器以及如何在SQL...
Ibatis 提供了一些基本的API,如查询、添加、删除和修改方法。通常,会通过 SqlMapClient 的工厂类创建 SqlMapClient 实例,以管理数据库操作。例如,使用 SqlMapClientBuilder 创建 SqlMapClient 对象,然后执行...
通过这个demo,你可以了解到Ibatis的基本用法,如何编写SQL映射文件,如何设计Mapper接口,以及如何在Java代码中调用这些接口执行数据库操作。同时,也能掌握Ibatis的动态SQL特性,以及如何配合Spring进行更高效的...
这个入门级别的教程将引导你了解 Ibatis 的基本概念和使用方法,包括增删改查操作、多条件查询以及单对象和数据集合查询。 1. **安装与配置** 在开始使用 Ibatis 之前,你需要在项目中引入 Ibatis 的依赖。如果是 ...
通过阅读和理解iBatis的源码,我们可以更深入地了解其设计思路,从而更好地利用这个框架,提升我们的开发效率和代码质量。同时,源码学习也能帮助我们解决实际项目中遇到的问题,增强我们在ORM领域的专业技能。
Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作,极大地提高了开发效率。在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入...
### ibatis应对批量update 在处理大量数据更新时,传统的for循环方式往往会导致效率低下。这是因为每一次循环都需要执行一次数据库连接操作,对于批量更新来说,这样的处理方式显然不够高效。为了解决这个问题,...
7. 执行性能:提供优化建议,如批处理、缓存使用等,以提升应用程序的运行效率。 总之,Ibatis是一个强大且灵活的Java持久层框架,其API、文档和说明文档为开发者提供了全面的工具和指导,帮助他们高效地进行数据库...
2. 执行映射的Statement,iBATIS框架创建PreparedStatement,使用参数对象,执行SQL并从结果集中构建返回对象。 3. 返回结果,如果是更新操作,返回受影响的行数;如果是查询,返回单个对象或对象集合。 五、基础...
这篇博客“iBatis执行非查询语句(CRUD,函数和过程)”深入探讨了如何在iBatis中执行创建、读取、更新和删除(CRUD)操作,以及调用数据库存储过程和函数。 一、iBatis简介 iBatis最初由MyBatis的创始人Clinton ...
此外,iBATIS还提供了一些辅助工具,如`ParameterMap`用于管理SQL语句的输入参数,`ResultMap`用于处理查询结果的映射,以及`Cache`机制,用于缓存查询结果,提高系统性能。这些工具类使得开发者能够更方便地进行...
Ibatis 的一大亮点是支持动态 SQL,开发者可以在 SQL 映射文件中使用条件判断、循环等结构,使得 SQL 语句能够根据传入参数的不同而变化。 **4. MyBatis vs Ibatis** 尽管 Ibatis 在后期演进成了 MyBatis,两者在...
本书详细介绍了iBATIS这一流行开源框架的核心概念、工作原理以及在实际项目中的应用技巧,是iBATIS学习者和使用者不可或缺的参考资料。 ### IBATIS哲学 iBATIS的哲学强调简洁性与灵活性,它旨在提供一个轻量级的...
总的来说,IBATIS API和开发文档是学习和使用IBATIS不可或缺的资源,它们涵盖了IBATIS的所有关键特性和用法,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过深入理解和实践,可以充分利用IBATIS的灵活性...
### ibatis3.0中`in`的用法详解 #### 一、引言 在进行数据库查询时,经常会遇到需要根据多个值进行查询的情况,这时`IN`语句就显得尤为重要。`IN`语句可以用于判断某个字段的值是否在一个指定的列表之中,非常适用...