iBatis2之SqlMap配置总结
<insert id="insertAccount" parameterClass="Account"> <selectKey resultClass="long" keyProperty="sctId"> SELECT SEQ_TEST.NEXTVAL FROM DUAL </selectKey> insert into .... ........ </insert>
插入语句之后配置:主要是针对自增主键的表而言,这类表在插入时不需要主键,而是在插入过程自动获取一个自增的主键。比如MySQL
<insert id="insertAccount" parameterClass="Account"> <selectKey resultClass="long" keyProperty="sctId"> SELECT LAST_INSERT_ID() </selectKey> insert into .... ........ </insert>
当然,是否需要配置<selectKey>根据情况,只要能保证记录有主键即可。一旦配置了<selectKey>,就可以在执行插入操作时获取到新增记录的主键。
6、SQL入参parameterClass
插入语句入参:parameterClass="类别名" 来设定。
<select id="getById" parameterClass="long" resultMap="result_base"> select * from customer where id = #value# </select>
map是最强大的入参方式,任何入参方式都可以转换为这种入参方式,因为iBatis仅接受一个入参,当几个参数分布在不同对象中的时候,将这些对象的属性(或者对象本身put)到map中,然后一次传递给sql语句是非常有效。可以自己写一个将对象或者对象集合转换为map的工具。
另外,map的中的元素(比如pobj)是个复杂对象,则还可以在SQL中以#pobj.protyename#的格式来引用其中内嵌的属性。当然不推荐这么干。
7、返回值参数类型
返回值参数也同样有两种类型,一种是对象类型resultClass="Account",一种是resultMap="AccountResult"。这两种类型的选择常常会令人迷惑不解,一言明其理:
<resultMap id="AccountResult" class="Account"> <result property="id" column="ACC_ID"/> <result property="firstName" column="ACC_FIRST_NAME"/> <result property="lastName" column="ACC_LAST_NAME"/> <result property="emailAddress" column="ACC_EMAIL"/> </resultMap>
resultMap映射的结果的目的就是要将查询的结果集绑定到映射对象的属性上。
<dynamic prepend="where"> <isNotEmpty prepend="and" property="$$$$$"> $name like '%'|| #$name# ||'%' </isNotEmpty> <isGreaterThan prepend="and" property="$$$$$" compareValue="$$$number"> $code like '%'|| #$code# ||'%' </isGreaterThan> </dynamic>
当然,prepend表示链接关键字,可以为任何字符串,当为sql关键字时,iBatis自动判断是否应该添加该关键字。该语法也很简单,关键是要会用心思考组织动态SQL。
<resultMap id="base" class="Account"> <result property="id" column="ACC_ID"/> <result property="firstName" column="ACC_FIRST_NAME"/> <result property="lastName" column="ACC_LAST_NAME"/> </resultMap> <resultMap id="AccountResult" class="Account" extends="Account.base"> <result property="emailAddress" column="ACC_EMAIL"/> </resultMap>
这样,就很容易扩展了一个映射策略。
public class Customer { private Long id; private String name; private String address; private String postcode; private String sex; private List<Orders> orderlist = new ArrayList<Orders>();
<resultMap id="result" class="customer"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="address" column="address"/> <result property="postcode" column="postcode"/> <result property="sex" column="sex"/> <result property="orderlist" column="id" select="orders.findByCustomerId"/> </resultMap>
在这个映射中,为了查询客户的时候,能查询到相关的订单,可以在映射orderlist属性的时候,将其指向另外一个查询orders.findByCustomerId,这个查询是以Customer的id为参数来查询的。
<select id="findByCustomerId" resultMap="result_base" parameterClass="long"> select * from orders where customerId = #value# </select>
原理就是这么简单,然后根据实际情况,可以自由实现实体间的关联关系。
<parameterMap id="swapParameters" class="map"> <parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> <parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> </parameterMap> <procedure id="swapEmailAddresses" parameterMap="swapParameters"> {call swap_email_address (?, ?)} </procedure>
调用上面的存储过程将同时互换两个字段(数据库表)和参数对象(Map)中的两个 email地址。如果参数的 mode 属性设为 INOUT 或
OUT,则参数对象的值被修改。否则保持不变。
注意!要确保始终只使用 JDBC 标准的存储过程语法。参考 JDBC 的
CallableStatement
文档以获得更详细的信息。
网站上获取:
http://www.opensymphony.com/oscache/。
本附录是译者添加的,列出了初学者容易出错的地方,作为完成快速入门课程后的学习 笔记,可以让初学者少走些弯路。
相关推荐
以下是关于iBatis_SqlMap配置的一些关键知识点: 1. **命名空间(Namespace)**: 命名空间是SqlMap配置中的一个重要概念,用于区分不同的SqlMap片段。例如,`<sqlMap namespace="Account">`,这个命名空间使得在...
综上所述,iBatis的SqlMap配置是其核心功能之一,涵盖了命名空间、实体别名、主键处理、参数传递以及结果集映射等多个方面。熟练掌握这些配置细节,能够显著提升iBatis项目的开发效率和代码质量。
总结来说,iBatis中的SQLMap配置涉及到命名空间、别名、插入操作、主键获取、参数类型和结果映射等多个方面,理解和熟练掌握这些知识点对于高效地使用iBatis框架至关重要。通过合理的配置,可以有效地将Java代码与...
总结,`ibatis-sqlmap-2.jar.zip`中的`ibatis-sqlmap-2.jar`是iBatis-SQLMap 2的核心库,它为开发者提供了强大的SQL操作和对象映射功能。通过理解并熟练运用iBatis-SQLMap 2,开发者可以构建出高效、灵活的数据库...
"ibatis_修改sqlmap不重启"这个主题聚焦于如何在开发过程中优化流程,提升效率,即在Ibatis中更改SqlMap配置后,无需重启应用即可生效。 一、Ibatis SqlMap概述 SqlMap是Ibatis的核心组件,它包含了SQL查询的配置...
SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的70的工作量。Sql Map配置文件是iBatis配置的核心,从数据库连接到执行SQL时使用的sqlMap文件都是通过此文件中的配置提供给框架的,它通常命名为...
总结,Ibatis-SqlMap作为一个强大的持久层框架,通过XML映射文件实现了SQL与Java代码的解耦,提供了灵活的SQL支持和良好的缓存机制。对于开发者而言,理解其核心概念和使用流程,以及关注不同版本之间的差异,有助于...
Ibatis的SqlMap配置文件是其核心部分,用于定义SQL语句、参数映射和结果映射,但手动编写SqlMap文件可能效率低下且容易出错。为了解决这个问题,出现了"ibatis的SqlMap辅助生成工具",它旨在提高开发效率,减少错误...
2. **SQLMap配置**:学习如何编写SqlMapConfig.xml,配置数据源、事务管理器以及日志设置。 3. **SQL映射文件**:了解XML格式的SQLMap文件,包括如何定义SQL语句、参数映射和结果映射。 4. **动态SQL**:探索如何...
2. **在SqlMap配置文件中使用通配符**: 在Ibatis的XML配置文件中,可以使用`<if>`标签来插入动态SQL部分,结合`#{}`占位符和通配符,实现动态模糊查询。例如: ```xml SELECT * FROM my_table WHERE column_...
此外,iBatis的映射机制是其核心特色之一。它允许将SQL查询结果自动映射到Java对象,这主要依赖于ResultMap和ResultMapType。ResultMap定义了如何从数据库结果集中提取数据并映射到Java对象,包括字段映射、级联映射...
2. **sqlMap**:在MyBatis中,SQL Map是XML配置文件,用于定义SQL查询、存储过程等,与Java对象映射关系。 3. **入门**:表示教程会涵盖基础概念和步骤,适合初学者。 4. **代码**:意味着教程将包含实际的编程示例...
综上所述,ibatis-sqlMap提供了丰富的功能集,不仅简化了数据库访问逻辑的编写,还提供了高度灵活的配置选项。通过深入理解上述各个组件的功能和使用方法,开发者可以充分利用DataMapper的能力,构建出高效、健壮且...
iBatis在初始化时会读取配置文件(如:mybatis-config.xml),并根据其中的设置加载所有的SQL映射文件。这些文件通常位于类路径下的指定目录,例如"com/example/mapping"。在默认情况下,一旦应用启动,这些文件就会...
2. **Ibatis-dao**: DAO(Data Access Object)层是软件设计模式中用于数据库访问的接口,Ibatis-dao提供了对数据库操作的抽象层,使得开发者可以编写更简洁、可维护的代码。在Ibatis中,DAO通常由Mapper接口和...
标题 "ibatis-sqlmap-2.3.4.741-sources.zip_4 3 2 1_ibatis-sqlm_ibatis-s" 暗示了这是一个关于iBATIS SQLMap的源码包,版本号为2.3.4.741,可能是一个增强或修改后的版本,具有特定的优化和改进。描述中提到了针对...
总结来说,`ibatis2mybatisConverter` 是一个实用的工具,它可以帮助开发者快速地将基于 iBatis 2 的项目过渡到 Mybatis 3,利用后者提供的更多特性和改进。通过理解 iBatis 2 和 Mybatis 3 在 SQL 映射、参数映射和...
### Java Ibaites SqlMap配置文件详解 #### 一、SqlMap配置文件概述 Ibaites 是一个基于 Java 的优秀持久层框架,它通过 XML 配置文件将 SQL 语句与 Java 代码分离,使得数据库操作变得更加简单且易于维护。在 ...
iBatis 中的 SqlMap 配置是核心组件之一,占据了 iBatis 开发的 70% 的工作量。因此,了解 SqlMap 的配置是非常重要的。本文将详细介绍 SqlMap 配置的各个方面。 命名空间 在 SqlMap 中,命名空间是指在配置文件中...