




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
搭建ibaits环境第一个例子参考第一个ibatis例子jar包说明ibatis-26.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 where id=?3. 将入参映射入sql语句的参数(如果有入参)4. 执行sql语句5. 将sql执行的结果映射到指定类型(原生类型,map,bean,list)中。然后返回结果。SQL入参parameterClass(重点):可以是类(javabean),hashmap,或者原生类型(string,int,long,double)当只有一个原生类型入参时,使用#value#来引用,使用map和类通过名字对应设置值。返回值参数类型resultClass,resultMap(重点):1. 当结果集列名和类属性名完全对应的时候,则应该使用resultClass来指定查询结果类型。当然有些列名不对应,可以在sql中使用as重命名达到一致的效果。当只有一个字段的时候,还可以直接使用原生类型(string,int,long)。2. 当查询结果列名和类属性名对应不上的时候,应该选择resultMap指定查询结果集类型。否则,则查询出来填充的对象属性为空(数字的为0,对象的为null)。接口和类的使用com.ibatis.sqlmap.client.SqlMapClient此接口是专门用来执行sqlmap.xml文件的sql语句的。它的主要方法有:此接口提供的方法有:基本操作:l Object insert(Stringid) :执行指定配置ID的增加sql语句l Object insert(Stringid, ObjectparameterObject)l int delete(Stringid) :执行指定配置ID的删除sql语句,此sql是没有任何入参的,返回删除的记录数l int delete(Stringid, ObjectparameterObject) :执行指定配置ID的删除sql语句,此sql是可以带入参的,返回删除的记录数l int update(Stringid)l int update(Stringid, ObjectparameterObject)l Object queryForObject(Stringid) : 当只有一条记录的时候才可以使用。l Object queryForObject(Stringid, ObjectparameterObject)l List queryForList(java.lang.Stringid) : 执行指定配置id的查询语句l List queryForList(Stringid, ObjectparameterObject) :批量处理:l int executeBatch() :执行批量sql语句。l void startBatch()事务处理:l void commitTransaction() : 提交事务并释放连接l void endTransaction() : 回滚事务并释放连接l void startTransaction() :开始事务返回值参数类型映射例子说明:select count(*) from user SELECTuserName,passwordFROMUSERWHEREDEPARTMENT=#department# 实体类- SELECTUSERIDasuserid,USERNAMEasusername,PASSWORDas password,DEPARTMENTasdepartmentFROMUSERWHERE DEPARTMENT=#department# MAP类- SELECTUSERNAMEFROMUSERWHEREDEPARTMENT=#department# 实体类- SELECT*FROMUSERWHERENAME=#department# AND MAP类- SELECT*FROMUSERWHEREDEPARTMENT=#department# 作业:1. 测试上面的所有方法。2. 测试入参情况:没有入参,单个int,String,map对象,bean对象。3. 测试出参情况:单个int,String,map对象,bean对象,list对象。ibatis配置文件详解常用数据库类型和java类型匹配Ibatis 映射类型Java 类型intlong,intlonglongdoubledouble DoublevarvharStringdatetimeutil.Date 或者 sql.Datetimesql.timedatesqlmap.xml的详细解析1. 声明javabean的实体。属性有:alias,type。2. 专门用来声明insert类型的sql语句的。属性有:id,parameterClass3. 专门用来声明delete类型的sql语句的。属性有:id,parameterClass4. 专门用来声明update类型的sql语句的。属性有:id,parameterClass5. 专门用来声明select类型的sql语句的。属性有:id,parameterClass,resultMap,resultMClass。而且resultMap和resultClass不能同时使用。6. 专门用来声明字段映射关系的。属性有:id,class子节点:result,子节点属性:property(java字段),column(数据库字段),javaType,jdbcType,nullValue(当查询是null值时,该值是多少)7. 专门用来声明片段sql语句的,使用include来引入。例子:from userselect id,user_name,password sqlMapConfig.xml的详细解析此文件其实就是一个数据源的配置。数据源参数包括了连接数据库参数和连接池参数。例子: 在这里配置pertis,在配置datasource的时候,用$获得perties里的属性的值,这个配置是可选的例子:参数详细说明: cacheModelsEnabled 是否启用SqlMapClient上的缓存机制.建议设为true; enhancementEnabled 是否针对POJO启用字节码增强机制以提升getter/setter的调用效能,避免使用JavaReflect所带来的性能开销。同时,这也为Lazy Loading带来了极大的性能提升。建议设为true; lazyLoadingEnabled 是否启用延迟加载机制,建议设为true errorTracingEnabled 是否启用错误日志,在开发期间建议设为true 以方便调试; maxRequests 最大并发请求数(Statement并发数); maxTransactions最大并发事务数; maxSessions最大Session 数。即当前最大允许的并发SqlMapClient数。 maxSessions 设定必须介于maxTransactions和maxRequests之间,即 maxTransactionsmaxSessionsmaxSessions=maxRequests; useStatementNamespaces 是否使用Statement命名空间。这里的命名空间指的是映射文件中,sqlMap节点的namespace属性,如在上例中针对t_user表的映射文件sqlMap节点:例子: 参数详细说明:transactionManager节点定义了ibatis的事务管理器,目前提供了以下几种选择: JDBC :通过传统JDBC Cmit/rollback实现事务支持。【建议选择】JTA :使用容器提供的JTA服务实现全局事务管理。EXTERNAL :外部事务管理,如在EJB中使用ibatis,通过EJB的部署配置即可实现自动的事务管理机制。此时ibatis将把所有事务委托给外部容器进行管理。参数详细说明:此节点设置数据源的基本参数。type属性:说明使用哪个数据源。dataSource节点的type属性指定了dataSource的实现类型。 可选项目: SIMPLE:【建议选择】SIMPLE是ibatis内置的dataSource实现,其中实现了一个简单的数据库连接池机制,对应 ibatis 实现类为com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。 DBCP :基于Apache DBCP连接池组件实现的DataSource封装,当无容器提供DataSource服务时,建议使用该选项,对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。 JNDI:使用J2EE容器提供的DataSource实现,DataSource将通过指定的JNDI Name从容器中获取。对应 ibatis实现类为com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。子节点参数详细说明:节点说明:此节点是配置了sqlmap文件的路径,可以配置多个。ibatis细节问题1. #和$符号的区别使用#符号的时候,直接是一个字段的入参,使用$符号,就是拼接字符串。2. 如何使用模糊查询模糊查询是针对字符串而言的,如果遇到两个单引号要包含一个参数,则不能再用#来引用变量了,而应该改为$,比如:%$varName$%,当然,也可以使用 % | #varname# | % 来绕过此问题。3. 结果集映射的继承结果集映射的继承的目的是为了映射定义的复用,比如下面定义了两个映射,AccountResult继承了base: 这样,就很容易扩展了一个映射策略。4. null问题入参是null值:INSERTINTOTEST(ID,NAME,PASSWD)VALUES(#id#,#name#,#passwd:VARCHAR:NULL#)返回null值:property有一个属性nullValue,让这个属性等于一个值就可以了。5. 多层嵌套传递值注意标红部分:对于嵌套传值的配置:insert into user(id,user_name,password) values (#id#, #name#,#userClass.className#)Bean实例:class User private int id; private String name; private String password; private UserClass userClass;赋值实例:User tempuser = new User(); UserClass uc = new UserClass();uc.setClassName(className);tempuser.setUserClass(uc);6. 多层嵌套获取值和上一个问题一样的解决方法。例子如下:MAP类- SELECTclass_nameFROMUSERWHEREid=#id# 7. 命名空间什么是命名空间呢?举个例子:在我们县里面有两个人的名字是一样的都叫:啊牛,但是他们所在的村不一样,如果我在县里面说:啊牛,那就分不清是那个,但是如果我加上某某村的阿牛,那就能确定是哪个人了。这个村就是一个空间。同样的道理,如果我们在每个sqlmap文件中都有一个名字,那么不同的sqlmap里面的sql的命名id就可以相同,因为我们可以通过sqlmap文件的名字来区别。这个就是命名空间。 /不同的命名空间使用名字唯一调用方法:SimpleExample.batchInsertTemplate(space2.insert_user,list);Space2: : 为空间名称。 insert_user : 该空间下的id。在同一个命名空间下的id唯一,不同命名空间的id可以相同8. 动态sql一元判定: 参数类中是否提供了此属性 属性值是否为NULL属性值为空例子:select id,user_name,password from user(name like %|#name#|%) 或者 (name like %$name$%)(address like #address#)二元判定: 相等 不等 大于 大于等于 小于 小于等于例子:(age=#age#)9. 自动生成id对应mysql数据库,本身已经提供了自动生成id的功能,所以不需要处理。oracle的自动生成id:!CDATAINSERT INTO PRODUCT (PRD_ID,PRD_DESCRIPTION)VALUES (#id#,#description#)10. 大数据类型oracle讲解。ibatis的理论知识iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化肥厂化肥应用指导规定
- 2025合同范例:团购合同模板
- 2024-2025学年新教材高中数学 第十章 概率 10.3 频率与概率(1)说课稿 新人教A版必修第二册
- 美容院经营管理合同
- some和any (说课稿)-2024-2025学年人教新目标Go For It!英语八年级上册
- 关于春节放假的通知范文集锦4篇
- 福建省专升本语文知识点
- 纯住宅小区产权变更及继承交易合同范本
- 2025特种设备采购合同
- 消防安全应急预案编制与实施合同补充协议范本
- YC/Z 550-2016卷烟制造过程质量风险评估指南
- 工程水文第3章课件
- GB/T 4032-2013具有摆轮游丝振荡系统的精密手表
- GB/T 34875-2017离心泵和转子泵用轴封系统
- GB/T 21063.4-2007政务信息资源目录体系第4部分:政务信息资源分类
- GA/T 1081-2020安全防范系统维护保养规范
- 02药物不良反应adr课件
- 施工项目成本管理课件
- 文物建筑保护修缮专项方案
- 营销与2008欧锦赛ktv渠道方案
- 故障录波器课件
评论
0/150
提交评论