以以下配置为例说明Ibatis的配置:
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.p6spy.engine.spy.P6SpyDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/sample"/>
<property name="JDBC.Username" value="user"/>
<property name="JDBC.Password" value="mypass"/>
<property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select 1 from XXX"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/ibatis/sample/User.xml"/>
</sqlMapConfig>
=========================
POJO示例:
public class User implements Serializable {
private Integer id;
private String name;
private Integer sex;
private Set addresses = new HashSet();
/** default constructor */
public User() {
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return this.sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
}
=============
映射文件
与 Hibernate 不同。因为需要人工编写SQL 代码,ibatis 的映射文件一般采用手动编写
<sqlMap namespace="User">
<typeAlias alias="user" type="com.ibatis.sample.User"/>
<select id="getUser"
parameterClass="java.lang.String"
resultClass="user">
<![CDATA[
select
name,
sex
from t_user
where name = #name#
]]>
</select>
<update id="updateUser" parameterClass="user">
<![CDATA[
UPDATE t_user
SET
name=#name#,
sex=#sex#
WHERE id = #id#
]]>
</update>
<insert id="insertUser" parameterClass="user">
INSERT INTO t_user (
name,
sex)
VALUES (
#name#,
#sex#
)
</insert>
<delete id="deleteUser" parameterClass="java.lang.String">
delete from t_user
where id = #value#
</delete>
</sqlMap>
⑴ ID
指定了操作ID,之后我们可以在代码中通过指定操作id 来执行此节点所定
义的操作,如:
sqlMap.update("updateUser",user);
ID设定使得在一个配置文件中定义两个同名节点成为可能(两个update节点,以不同id区分)
⑵ parameterClass
指 定 了操作所需的参数类型, 此例中update 操作以
com.ibatis.sample.User 类型的对象作为参数,目标是将提供的User实例更新到数据库。
parameterClass="user"中,user为“com.ibatis.sample.User”
类的别名,别名可通过typeAlias节点指定,如示例配置文件中的:
<typeAlias alias="user" type="com.ibatis.sample.User"/>
⑶ <![CDATA[……]]>
通过<![CDATA[……]]>节点,可以避免SQL 中与XML 规范相冲突的字符对XML映射文件的合法性造成影响。
⑷ 执行更新操作的SQL,这里的SQL 即实际数据库支持的SQL 语句,将由ibatis填入参数后交给数据库执行。
⑸ SQL中所需的用户名参数,“#name#”在运行期会由传入的user对象的name属性填充。
⑹ SQL 中所需的用户性别参数“#sex#”,将在运行期由传入的user 对象的sex属性填充。
⑺ SQL中所需的条件参数“#id#”,将在运行期由传入的user对象的id属性填充。
对于这个示例,ibatis在运行期会读取id 为“updateUser”的update节点的SQL定义,并调用指定的user对象的对应getter方法获取属性值,并用此属性值,对SQL中的参数进行填充后提交数据库执行。
此例对应的应用级代码如下,其中演示了ibatis SQLMap的基本使用方法:
String resource ="com/ibatis/sample/SqlMapConfig.xml";
Reader reader;
reader = Resources.getResourceAsReader(resource);
XmlSqlMapClientBuilder xmlBuilder =new XmlSqlMapClientBuilder();
SqlMapClient sqlMap = xmlBuilder.buildSqlMap(reader);
//sqlMap系统初始化完毕,开始执行update操作
try{
sqlMap.startTransaction();
User user = new User();
user.setId(new Integer(1));
user.setName("Erica");
user.setSex(new Integer(1));
sqlMap.update("updateUser",user);
sqlMap.commitTransaction();
finally{
sqlMap.endTransaction();
}
其中,SqlMapClient是ibatis运作的核心,所有操作均通过SqlMapClient实例完成。
可以看出,对于应用层而言,程序员面对的是传统意义上的数据对象,而非JDBC中烦杂的ResultSet,这使得上层逻辑开发人员的工作量大大减轻,同时代码更加清晰简洁。
数据库操作在映射文件中加以定义,从而将数据存储逻辑从上层逻辑代码中独立出来。
而底层数据操作的SQL可配置化,使得我们可以控制最终的数据操作方式,通过SQL的优化获得最佳的数据库执行效能,这在依赖SQL自动生成的“全自动”ORM机制中是所难以实现的。
相关推荐
ibatis 实例 配置 源码 依赖包 ibatis-2.3.4.726.jar commons-logging-api.jar commons-logging-1.1.jar commons-dbcp-1.2.2.jar commons-pool.jar
ibatis 配置教程 本人通过此文档学会写ibatis实例 ibatis 配置教程 本人通过此文档学会写ibatis实例 ibatis 配置教程 本人通过此文档学会写ibatis实例 ibatis 配置教程 本人通过此文档学会写ibatis实例
spring+ibatis实例,包括用到的各种包,标准的开发目录组织,你值得拥有
可运行的ibatis实例,基本配置已写好。 对于入门新手很实用。
ibatis实例,包含了sqlmap,provider,maps配置,同时将代码分为持久层,服务层,UI层
spring与ibatis整合集成实例 spring与ibatis整合集成实例
ibatis 实例配置 一个典型的配置文件如下(具体配置项目的含义见后): <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS....
ibatis入门实例,很是方便,导入Myeclipse即用,快速入门,包含配置文件的规范化配置
ibatis快速上手 ibatis配置 ibatis基础语义 ibatis高级特性 ibatis简单实例
Ibatis增删改简单应用配置示例说明实例 oracle 11g + ibatis2
该资料包里面包含的东西非常的直观,主要是配置的过程,以及具体的实例。
Ibatis连接MySQL数据库实例 有代码 项目下下来直接跑就行了,不过要修改数据库配置信息哦 跑不起来我吃翔三斤
struts+spring+ibatis+mysql简单的配置实例
4,配置ibatis对应pojo的sqlmap文件 5,把providers.config复制到debug目录下,不用做任何修改 6,把SqlMap.config复制到debug目录下,只需修改其中的数据库联接信息,包括provider和dataSource 7,建数据库表 注意...
pring+struts2+ibatis 最小 配置 实例
springmvc+ibatis实例,只要修改一下数据配置文件,并创建相应的数据库,表,表只有一个tab_User,很好用的,实例是我花了好久才弄出来,各种包齐全,包绝对不多,也不少,就是刚刚好的感觉,懂吗?就是不会出现多余...
spring+ibatis 整合的简单实例,配置好的文件,简单实现一个功能在两个页面间的跳转及list的显示。
在网上找的资源,然后整合了springMVC,ibatis,redis框架,压缩包里面包括工程(Java文件),redis服务和导出的mysql文件,亲测通过,有问题可以交流。 redis通过配置aop来执行。
ibatis开发相关文档 配置 实例 ibatis开发相关文档 配置 实例 ibatis开发相关文档 配置 实例
iBATIS入门,简单的数据库操作,与hibernate的不同...