您好,欢迎访问三七文档
iBATISiBatis1.iBATIS简介2.实际操作3.注意事项iBATIS目录什么是iBATIS?iBATIS是一种datamapper。一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身相独立iBATIS则与之不同,它不是直接在类与数据表或字段与列之间进行关联,而是把SQL语句的参数(parameter)和返回结果(result)映射至类。在本书的剩余部分您将看到,iBATIS是处于类和数据表之间的一个中间层,这使得它在类和数据表之间进行映射时更加灵活,而不需要数据库模型或对象模型(objectmodel)的任何修改。我们所说的中间层实际上就是SQL,它使得iBATIS能够更好地分离数据库和对象模型的设计,这样就相对减少了两者间的耦合1.iBATIS简介1简介1.MVC三层架构2.XML配置3.方法调用2.实际操作2.12.1.MVC三层架构个人理解的MVC及分包1.Web目录为为视图层(V)2.Com.nstek.interfaces和com.nstek.dao属于业务逻辑层3.控制层不明显,后面详细说明4.Com.nstek.util.*下为本工程的实用工具包,在本工程中主要是存放对数据库进行连接的类,和连接数据库所需要的配置文件5.Com.nstek.entity此包下存放的是POJO类(持久化类)这是iBATIS所控制的持久化层,是在业务逻辑层是基础上细分出的一层6.Com.nstek.xml存放的是iBATIS的XML配置文件1.MVC三层架构2.XML配置3.方法调用2.实际操作2.22.2XML配置1.先为持久化类建立XML文件2.编写重要XML配置文件SqlMapConfig.xml配置文件及POJO2.2XML配置--SqlMapConfigSqlMapConfig.xml详细代码SqlMapConfig.xml详细代码2.2XML配置--SqlMapConfig以下为必写的XML标记必写标记2.2XML配置--SqlMapConfig建议大家把蓝色的标记写上.这样就可以动态选择连接的数据库,否则在propertyname=“JDBC.Driver”value=“${driver}”/中的value值就要写成死的.不利于维护和修改,按上段代码所示可按配置文件动态附值下面为配置文件中的内容:properties2.2XML配置--SqlMapConfigsqlMap标签为必填项,次项是引入持久类的XML配置文件sqlMap2.2XML配置--SqlMapSqlMap.xml部分代码此为SqlMap部分代码2.2XML配置--SqlMapflushIntervalhours=“24”/24小时后清空缓存flushOnExecutestatement=“selAll”/执行selAll操作后清空缓存propertyname=“size”value=“1000”/定义缓存区大小PS:insertupdatedelete标签不允许用cacheModel属性selectstatement可以cacheModel2.2XML配置--SqlMap缓存模型的属性type(必有)1.MEMORY:2.LRU3.FIFOcacheType2.2XML配置--SqlMapMEMORY:property标签分有STRONG\SOFT\WEAK,三种形式1.STRONG:即基于传统的Java对象引用机制,除非对Cache显式清空(如到了flushInterval设定的时间;执行了flushOnExecute所指定的方法;或代码中对Cache执行了清除操作等),否则引用将被持续保留。此类型的设定适用于缓存常用的数据对象,或者当前系统内存非常充裕的情况。2.SOFT:基于SoftReference的缓存实现,只有JVM内存不足的时候,才会对缓冲池中的数据对象进行回收。此类型的设定适用于系统内存较为充裕,且系统并发量比较稳定的情况。3.WEAK:基于WeakReference的缓存实现,当JVM垃圾回收时,缓存中的数据对象将被JVM收回。一般情况下,可以采用WEAK的MEMORY型Cache配置。memory2.2XML配置--SqlMapLRU型Cache当Cache达到预先设定的最大容量时,ibatis会按照“最少使用”原则将使用频率最少的对象从缓冲中清除.LRU2.2XML配置--SqlMap先进先出型缓存,最先放入Cache中的数据将被最先废除。可配置参数与LRU型相同:FIFO2.2XML配置--SqlMap这个标签是为POJO类进行去别名,方便后面标签的调用个人比较推荐这样写Alias2.2XML配置--SqlMap输入值的映射,里面的参数是对应的POJO类的属性.class=“person”..这个是所对应的POJO类的别名.是在typeAlias中定义的parameterMap2.2XML配置--SqlMap输入值的映射,里面的参数是对应的POJO类的属性.class=“person”..这个是所对应的POJO类的别名.是在typeAlias中定义的.由于iBATIS是基于对象的.所以在resultproperty=“per.pid”column=“pid”/中property中的值是以对象的形式存在的.column就是该值在数据库中所对应的字段resultMap2.2XML配置--SqlMapSqlMap的操作都有三种写法.现在就以插入说明insert标签中parameterMap为上面所定义的输入值映射selectKeykeyProperty=“pid”resultClass=“int”获取自动增长的主键keyProperty中必须为parameterMap中所定义过映射的字段,resultClass是说明获取主键后返回的是那种类型的变量利用设置parameterMap属性后.在SQL语句中就可以用’?’来代替插入的值了.特别要注意的一点..’?’是有顺序的.所以在上面定义的parameterMap中的顺序要与输入值的顺序相同.这样我觉得就带来了不便.所以比较喜欢第2种方法insert2.2XML配置--SqlMapparameterClass这种方法的不同就在于parameterClass代替了parameterMap.parameterClass是所对应的POJO类.如果没有在上面定义类的别名的话.在这里面就要填写类的全路径这种方法比较灵活SQL语句中在相应的位置上用’##’包裹着POJO类中于数据库对应的元素即可insert2.2XML配置--SqlMap更新update2.2XML配置--SqlMap删除Delete2.2XML配置--SqlMap查询Select2.2XML配置--SqlMap用{callproc_name()}来调用数据库中的存储过程procedure2.2XML配置--SqlMapstatement标签是个通用标签.可以写任何SQL语句,上述为实现查询的SQLstatement2.2XML配置--SqlMap条件查询1条件查询的大概写法InlineParameter:这种方式可以在statement中使用.方法是直接传递POJO类对象.与前面2种Parameter不同就在于不用在标签内部定义所对应的POJO类2.2XML配置--SqlMap判断sscore字段是否大于0.添加关键字AND.并添加条件SQL,compareValue.是判断大于的数值条件查询2动态添加关键字WHERE判断per.pname字段是否为空.添加关键字AND.并添加条件SQL1.MVC三层架构2.XML配置3.方法调用2.实际操作2.32.3方法调用updateiBATIS中的insert,delete,update等方法都是用SqlMapClient的对象进行调用的.如红线部分所试.在此调用XML中updSc的更新方法.XML见下图.2.3方法调用statementiBATIS中的查询,返回List,Object等方法是用SqlMapClient的对象进行调用queryFor….如红线部分所试.在此调用XML中selAll的更新方法.XML见下图.2.3方法调用procedure这个是个插入的存储过程.所以用的是insert(“procIns”,obj);这个方法..如果是查询的话.跟前面提到的查询的调用是一样的1.在insert等标签调用parameterMap时.要注意元素的顺序是否跟数据库中顺序相同2.insertupdatedelete标签不能调用cacheModel3.在用parameterClass或者InlineParameter时,插入元素中不要忘记要被##包围着4.在对Oracle数据库进行同时插入两张表,并且有主外键关系时,可利用Oracle数据库中序列的属性nextval(取主键)和currval(取外键),但是这2个插入的标签要写在同一XML文件下.否则会出现错误3注意事项3注意事项
本文标题:iBATIS教程
链接地址:https://www.777doc.com/doc-4893072 .html