ibatis总结

目录

Ibatis的两大配置文件

Hibernate  Ibatis   Jdbc 三者区别  

Hibernate和Ibatis配置的区别

Ibatis之所以称为半自动化;

Ibatis的xml文件解读:

ibatis批量删除在配置文件中进行

容易出错的:

Ibatis动态条件查询标签

动态条件的嵌套使用

注意:

 对于oracle:

Ibatis中*.xml文件的配置


Ibatis的两大配置文件

1.sql-map-config.xml

2.*.xml

 

IbatissqlMapConfig.xml配置

 

settings:配置的一些参数设置的信息



sqlMap resource:通过它去包含相关的.xml文件

 

 

注意:在进行查询返回结果集的时候ibatis是根据字段名找到其在resultClass中指定的实体类的属性名然后对其赋值。

 

       要保证字段名和实体属性名一致,如果查询的字段名和属性名不一致,通过给字段名起别名来进行解决.

 

 

Hibernate  Ibatis   Jdbc 三者区别  

 

 

Hibernate属于全自动, Ibatis属于半自动,Jdbc属于手动,

开发效率上讲hibernate较高,ibatis居中,jdbc较低,

执行效率上讲hibernate较低,ibatis居中,jdbc较高,

因为jdbc是手工写sql语句,程序员对sql的控制能力更大,可以根据业务需要进行优化,而ibatis虽然也可以对sql进行优化,但是他里面将resultset封装为实体的过程中采用了反射机制所以一定程度上影响了性能,而hibernate因为高度封装所以开发效率相对较高,但正因为这个原因,所以程序员在对sql语句的控制和优化方面相对比较弱,而且在将resultset封装成实体的过程中也采用了反射机制,所以在性能方面较低。

 

 

HibernateIbatis配置的区别

 

                             

Hibernate  

 Ibatis

1.dao层继承HibernateDaoSupport

 1.dao层继承SqlMapClientDaoSupport

 

2.在spring-common.xml中配置sesssionFactory

  2.在spring-common.xml中配置SqlMapClient

3.加载hibernate.cfg.xml  

 3.加载sql-map-config.xml

4.在spring-dao.xml中注入是sesssionFactory

4.在spring-dao.xml中注入是SqlMapClient

 

5.在hibernate.cfg.xml配置文件中引入的是 *.hbm.xml文件,里面包含个各种对应及其映射关系

 5.在sql-map-config.xml中引入的是*.xml

        里面配置的都是sql语句

 

 

Ibatis之所以称为半自动化;

是因为你需要手工写SQL语句,

但不需要完成结果集resultset到实体类

的转换

 

dao

首先它要先继承一个类:SqlMapClientDaoSupport  

:结构化查询映射交给dao层 ,dao层支持这样的查询

getSqlMapClientTemplate : 获取结构化查询映射的模板 意思是把ibatis.Xml看作是一个模板,获取模板的方法就可以得到结果

 

这里有几个注意事项

1:获取总条数的时候要用Integer强转 不能用int  因为Integer是类型   强转之后Integer类型才能自动拆箱成int

2:批量删除的时候传一个list结合,所以需要把id字符串变成一个集合注意使用方法:List<String> list = Arrays.asList(id.split(“,”));

 

 

Ibatisxml文件解读

1:首先是它的根元素:<sqlMap namespace=”user”>

如果总文件中useStatementNamespaces="true"   在dao调的方法名前面要加一个  user.getCount

2:ibatis的总文件包含了许多子文件,多表以后一个bean对应一个xml

3:我想可以把xml看做一个工具类,调用方法的时候传一个方法名和另外一个参数

4:<typeAlias/>这个标签引入bean

5:<resultMap id=”” class=””/>两个属性的意思class引入type(类型)id和resultMap一起使用指返回值的类型  返回指的类型的另一种写法是 resultClass=””

6:模糊查询需要使用一个标签<isNotNUll>    他的引用<include refid=””/>

7:每次使用sql语句的时候  注意参数  id:方法名称   parmeterClass:传进来的参数类型  resultMap和resultClass:返回值的参数类型

8:批量删除的需要引入标签  <iterate conjunction="," open="(" close=")"> #[]# </iterate>

ibatis批量删除在配置文件中进行

1、传入ID字符串的list即可

<delete id="Del" resultMap="Select" parameterClass="list">

      delete     

      from SYS_TABLE

      where id in   

      <iterate conjunction="," open="(" close=")">

        #[]#

      </iterate>

</delete>

 

容易出错的

1:就是那四个参数 id  parmeterClass  resultMap  resultClass这四个参数的设置 必须正确

2:SQL语句是否正确  这个可以复制到数据库查询一下

 

 

Ibatis动态条件查询标签

dynamic

prepend

非空判断

<isNotEmpty prepend="and" property="bookName">

</isNotEmpty>

大于判断

<isGreaterThan prepend="and" property="minPrice" compareValue="0">

</isGreaterThan>

小于判断

<isLessThan prepend="and" property="minPrice" compareValue="0">

 

</isLessThan>

 

封装重复的sql语句

<sql id="bookWhere"></sql>

结合使用

<include refid="bookWhere"/>

 

 

动态条件的嵌套使用


 

<isGreaterThan prepend="and" property="maxAge"

          compareValue="0">

          <isGreaterThan prepend="and" property="maxAge"

            compareProperty="minAge">

          bookPrice &lt;= #maxPrice#

          </isGreaterThan>

</isGreaterThan>

 

 

注意:

1.compareValue是和一个具体的值比较compareProperty另外一个属性比较

2.xml<要替换为&lt;

3.可以通过 <![CDATA[employeeAge <= #maxAge#]]> 对其特殊字符进行转义

 

 

ibatis中如何获取外键的id

 

对于mysql:

 

 

 

 对于oracle:

 

 

 

Ibatis*.xml文件的配置

 

 

1.根标签为:sqlMap

 

2.typeAlias

 

3.增加对应的标签为insert

 

 

4.查询select标签

 

 

    注意:在进行查询返回结果集的时候,ibatis是根据字段名找到其在resultClass中指定的实体类的属性名,然后对其赋值。

       要保证字段名和实体属性名一致,如果查询的字段名和属性名不一致,通过给字段名起别名来进行解决.

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值