ibatis课件设计

上传人:xzh****18 文档编号:42066876 上传时间:2018-05-31 格式:DOC 页数:10 大小:97KB
返回 下载 相关 举报
ibatis课件设计_第1页
第1页 / 共10页
ibatis课件设计_第2页
第2页 / 共10页
ibatis课件设计_第3页
第3页 / 共10页
ibatis课件设计_第4页
第4页 / 共10页
ibatis课件设计_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《ibatis课件设计》由会员分享,可在线阅读,更多相关《ibatis课件设计(10页珍藏版)》请在金锄头文库上搜索。

1、搭建搭建 ibaits 环境环境第一个例子第一个例子参考第一个 ibatis 例子jar 包说明包说明ibatis-2.3.4.726.jar :ibatis 必须要到的包。 log4j-1.2.14.jar :ibatis 使用 log4j 来记录日志的。一个日志包 mysql.jar :操作 mysql 的 jar 包。ibatis 是如何工作的是如何工作的(重点重点)?以一个查询为例子:以一个查询为例子:1. 根据 id 找到 sqlmap.xml 文件中的 sql 语句。2. 将 sql 语句转变成预处理 sql 语句select name, password from user wh

2、ere id=?3. 将入参映射入 sql 语句的参数(如果有入参)4. 执行 sql 语句5. 将 sql 执行的结果映射到指定类型(原生类型,map,bean,list)中。然后返回结果。SQLSQL 入参入参 parameterClassparameterClass(重点):(重点): 可以是类(javabean) ,hashmap,或者原生类型(string,int,long,double)当只 有一个原生类型入参时,使用#value#来引用,使用 map 和类通过名字对应设置值。 返回值参数类型返回值参数类型 resultClassresultClass,resultMapresul

3、tMap(重点):(重点): 1. 当结果集列名和类属性名完全对应的时候,则应该使用 resultClassresultClass 来指定查询结果 类型。当然有些列名不对应,可以在 sql 中使用 as 重命名达到一致的效果。当只有一 个字段的时候,还可以直接使用原生类型(string,int,long) 。 2. 当查询结果列名和类属性名对应不上的时候,应该选择 resultMapresultMap 指定查询结果集类 型。否则,则查询出来填充的对象属性为空(数字的为 0,对象的为 null) 。接口和类的使用接口和类的使用 com.ibatis.sqlmap.client.SqlMapCli

4、ent 此接口是专门用来执行 sqlmap.xml 文件的 sql 语句的。它的主要方法有: 此接口提供的方法有:此接口提供的方法有: 基本操作:基本操作:Object insert(String id) :执行指定配置 ID 的增加 sql 语句 Object insert(String id, Object parameterObject) int delete(String id) :执行指定配置 ID 的删除 sql 语句,此 sql 是没有任何入参 的,返回删除的记录数int delete(String id, Object parameterObject) :执行指定配置 ID 的

5、删除 sql 语 句,此 sql 是可以带入参的,返回删除的记录数int update(String id) int update(String id, Object parameterObject) Object queryForObject(String id) : 当只有一条记录的时候才可以使用。 Object queryForObject(String id, Object parameterObject) List queryForList(java.lang.String id) : 执行指定配置 id 的查询语句 List queryForList(String id, Obje

6、ct parameterObject) : 批量处理:批量处理:int executeBatch() :执行批量 sql 语句。 void startBatch() 事务处理:事务处理:void commitTransaction() : 提交事务并释放连接 void endTransaction() : 回滚事务并释放连接 void startTransaction() :开始事务返回值参数类型映射例子说明:返回值参数类型映射例子说明:select count(*) from user SELECT userName,password FROM USER WHERE DEPARTMENT=#

7、department# 实体类 SELECT USERID as userid, USERNAME as username, PASSWORD as password, DEPARTMENT as department FROM USER WHERE DEPARTMENT=#department# MAP 类 SELECT USERNAME FROM USER WHERE DEPARTMENT=#department# 实体类 / / / =”0”/ SELECT * FROM USER WHERE NAME=#department# AND MAP 类 / / / / SELECT * FR

8、OM USER WHERE DEPARTMENT=#department# 作业: 1.测试上面的所有方法。 2.测试入参情况:没有入参,单个 int,String,map 对象,bean 对象。 3.测试出参情况:单个 int,String,map 对象,bean 对象,list 对象。ibatis 配置文件详解配置文件详解常用数据库类型和常用数据库类型和 java 类型匹配类型匹配Ibatis 映射类型映射类型Java 类型类型intlong,intlonglongdoubledouble DoublevarvharStringdatetimeutil.Date 或者或者 sql.Date

9、timesql.timedatesqlmap.xml 的详细解析的详细解析1.声明 javabean 的实体。 属性有:alias,type。2.专门用来声明 insert 类型的 sql 语句的。 属性有:id,parameterClass 3. 专门用来声明 delete 类型的 sql 语句的。 属性有:id,parameterClass 4. 专门用来声明 update 类型的 sql 语句的。 属性有:id,parameterClass 5. 专门用来声明 select 类型的 sql 语句的。 属性有:id,parameterClass,resultMap,resultMClass

10、。而且 resultMap和 resultClass 不能同时使用。6. 专门用来声明字段映射关系的。 属性有:id,class 子节点:result,子节点属性:property(java 字段),column(数据库字段), javaType,jdbcType, nullValue(当查询是 null 值时,该值是多少) 7. 专门用来声明片段 sql 语句的,使用 include 来引入。 例子:例子: from userselect id,user_name,password sqlMapConfig.xml 的详细解析的详细解析此文件其实就是一个数据源的配置。数据源参数包括了连接数据

11、库参数和连接池参数。 例子:例子:在这里配置 jdbc.propertis,在配置 datasource 的时候,用$获得 jdbc.properties 里的属性的 值,这个配置是可选的 例子:例子:参数详细说明:参数详细说明: cacheModelsEnabled 是否启用 SqlMapClient 上的缓存机制.建议设为“true“; enhancementEnabled 是否针对 POJO 启用字节码增强机制以提升 getter/setter 的调用效 能,避免使用 JavaReflect 所带来的性能开销。同时,这也为 Lazy Loading 带来了极大的性 能提升。建议设为“tr

12、ue“; lazyLoadingEnabled 是否启用延迟加载机制,建议设为“true“ errorTracingEnabled 是否启用错误日志,在开发期间建议设为“true“ 以方便调试; maxRequests 最大并发请求数(Statement 并发数); maxTransactions 最大并发事务数; maxSessions 最大 Session 数。即当前最大允许的并发 SqlMapClient 数。 maxSessions 设定必须介于 maxTransactions 和 maxRequests 之间,即 maxTransactions参数详细说明:参数详细说明: trans

13、actionManager 节点定义了 ibatis 的事务管理器,目前提供了以下几种选择: JDBC :通过传统 JDBC Cmit/rollback 实现事务支持。 【建议选择】 JTA :使用容器提供的 JTA 服务实现全局事务管理。 EXTERNAL :外部事务管理,如在 EJB 中使用 ibatis,通过 EJB 的部署配置即可实现自 动的事务管理机制。此时 ibatis 将把所有事务委托给外部容器进行管理。参数详细说明:参数详细说明: 此节点设置数据源的基本参数。 type 属性:说明使用哪个数据源。 dataSource 节点的 type 属性指定了 dataSource 的实现

14、类型。 可选项目: SIMPLE:【建议选择】 SIMPLE 是 ibatis 内置的 dataSource 实现,其中实现了一个简单的 数据库连接池机制,对应 ibatis 实现类为 com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。 DBCP :基于 Apache DBCP 连接池组件实现的 DataSource 封装,当无容器提 供 DataSource 服务时,建议使用该选项,对应 ibatis 实现类为 com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactor

15、y。 JNDI: 使用 J2EE 容器提供的 DataSource 实现,DataSource 将通过指定 的 JNDI Name 从容器中获取。对应 ibatis 实现类为 com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。子节点子节点参数详细说明:参数详细说明:节点说明:节点说明: 此节点是配置了 sqlmap 文件的路径,可以配置多个。ibatis 细节问题细节问题1.#和和$符号的区别符号的区别使用#符号的时候,直接是一个字段的入参,使用$符号,就是拼接字符串。2.如何使用模糊查询如何使用模糊查询模糊查询是针对字符串而言

16、的,如果遇到两个单引号要包含一个参数,则不能再用# 来引用变量了,而应该改为$,比如:%$varName$%,当然,也可以使用 % | #varname# | % 来绕过此问题。3.结果集映射的继承结果集映射的继承结果集映射的继承的目的是为了映射定义的复用,比如下面定义了两个映射, AccountResult 继承了 base:这样,就很容易扩展了一个映射策略。4.null 问题问题入参是入参是 null 值:值: INSERT INTO TEST(ID, NAME, PASSWD) VALUES (#id#,#name#, #passwd:VARCHAR:NULL#)返回返回 null 值:值:property 有一个属性有一个属性 nullValue,让这个属性等于一个值就可以了。,让这

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号