码迷,mamicode.com
首页 > 其他好文 > 详细

IBATIS

时间:2017-05-29 15:17:01      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:查询条件   开头   com   ram   12月   get   round   value   equal   

CreateTime--2017年5月29日13:56:15
Author:Marydon

一、IBATIS

  iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2002年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和·NET的持久层框架。

  (一)基本用法    

  CreateTime--2016年12月9日17:45:21

    1.1.1 iBATIS的isNotNull和isNotEmpty的区别

<isNotNull prepend="," property="FREMARK">
    FREMARK = #FREMARK#
</isNotNull>
<isNotEmpty prepend="," property="FBEGINDATE">
    FBEGINDATE = TO_DATE(#FBEGINDATE#,‘yyyy-MM-dd‘)
</isNotEmpty>

      isNotNull相当于

if(FREMARK){
    FREMARK = #FREMARK#
}

      该字段内容可以为空,即FREMARK=

      isNotEmpty相当于  

if(FREMARK != null && FREMARK != ""){
    FREMARK = #FREMARK#
}

      前台传过来的字段中不仅要包括FREMARK,并且FREMARK的内容不能为空,才会执行

  UpdateTime--2017年1月22日15:15:03

    1.1.2 常用标签

      1.1.2.1 字段不等于具体的值:column=="value"  

      语法:

        <isEqual prepend="" property="" compareValue=""></isEqual>

      举例:  

<isEqual prepend="and" property="FCOMLVL" compareValue="-1">
    FCOMLVL IS NULL
</isEqual>

      1.1.2.2 字段等于具体的值:column!="value"

      语法:

        <isNotEqual prepend="" property="" compareValue=""></isNotEqual>

      举例:

<isNotEqual prepend="and" property="FPLVCODE" compareValue="1">
    FPLVCODE=#FPLVCODE#
</isNotEqual>

      1.1.2.3 字段不为空:column!=null  

      语法:

        <isNotNull prepend="" property=""></isNotNull>

      举例:

<isNotNull prepend="," property="FJCMYEAR">
    FJCMYEAR=#FJCMYEAR#
</isNotNull>

      1.1.2.4 字段非空且不是空字符串:column!=null && column!=""

      语法:

        <isNotEmpty prepend="" property=""></isNotEmpty>

      举例:

<isNotEmpty prepend="and" property="FICDFM">
    FICDFM=#FICDFM#
</isNotEmpty>

      1.1.2.5 字段存在,且为空:column!=null&&column==""

      语法:

        <isEmpty prepend="" property=""></isEmpty>

      举例:        

<isNotEmpty property="CLICOM" >
     order by A.FCLINHITS DESC,length(A.FZJM) ASC,FICDCODE 
</isNotEmpty>
<isEmpty property="CLICOM">
    <isNotEmpty property="HOSCOM" >
        order by A.FINHOSHITS DESC,length(A.FZJM) ASC,FICDCODE
    </isNotEmpty>
    <isEmpty property="HOSCOM">
        order by A.FINHOSHITS DESC,length(A.FZJM) ASC,FICDCODE
    </isEmpty>
</isEmpty>

    1.1.2.6 字段不存在:column==null

    语法:

      <isNull prepend="" property=""></isNull>    

    1.1.3 XML文件中如何使用">"和"<"

    方法一:      

      使用
      <![CDATA[

      ]]>

    举例:

<![CDATA[
      X1.ORGDEGREE <= #ORGDEGREE_Z#
]]>

    方法二:

      大于用 &gt; 表示,小于用 &lt; 表示

    1.1.4 增删改查

<insert id="insertTSORGDIAITEM" parameterClass="map">
    INSERT INTO 表名
</insert>
<update id="updateTDICTICDCODE"  parameterClass="map">
    UPDATE 表名
</update>
<delete id="delTSORGDIAITEM" parameterClass="map">
    DELETE FROM 表名
</delete>
<select id="getTSORGDIAITEM" parameterClass="map" remapResults="true" resultClass="java.util.HashMap" cacheModel="cacheTSORGDIAITEM">
    SELECT 字段 FROM 表名
</select>

    1.1.5 动态拼接WHERE查询条件

      1.1.5.1 声明动态WHERE条件

<sql id="isReported_where">
    <dynamic prepend="where">
        <isNotEmpty prepend=" " property="FPROVLEVELLIMIT">
            x1.FPROVLEVELLIMIT=#FPROVLEVELLIMIT#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="FCOUNLEVELLIMIT">
            x1.FCOUNLEVELLIMIT=#FCOUNLEVELLIMIT#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="FTOWNLEVELLIMIT">
            x1.FTOWNLEVELLIMIT=#FTOWNLEVELLIMIT#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="FVILLLEVELLIMIT">
            x1.FVILLLEVELLIMIT=#FVILLLEVELLIMIT#
        </isNotEmpty>
    </dynamic>
</sql>

      注意:

        a.dynamic prepend="值",这个地方的值视情况而定,一般为""或"where";

        b.isNotEmpty 第一个prepend的值为" "或"and",必须有值。

      1.1.5.2 引用引用SQL

<!-- 引用通用SQL -->
<include refid="TSORGDIAITEM_WHERE"/>

    1.1.6 ibatis配置文件常用配置

<sqlMapConfig>
    <settings cacheModelsEnabled="true" lazyLoadingEnabled="true"
        enhancementEnabled="true" useStatementNamespaces="true"
        statementCachingEnabled="true" classInfoCacheEnabled="true" />
</sqlMapConfig>

    说明:    

cacheModelsEnabled
//是否启动ibatis中的缓存功能;
lazyLoadingEnabled
//是否同时懒加载带来极大的性能提升;
useStatementNamespaces
//是否使用 domain xml 文件中 namespace 别名配置
//iBATIS的默认是不会启动命名空间的,若使用,需声明该值为true
enhancementEnabled
//是否需要POJO启动Java字节码增强功能,可以提升getter/setter的调用效能避免Java反射所带来的性能开销。
剩下两个默认值都为true
classInfoCacheEnabled 
/*With this setting enabled, iBATIS will maintain a cache of introspected classes. This will lead to a  significant reduction in startup time if many classes are reused.*/
statementCachingEnabled (iBATIS 2.3.0以后版本中有)
/*With this setting enabled, iBATIS will maintain a local cache of prepared statements. This can lead to significant performance improvements.*/

 

      

  

  (二)IBATIS + ORACLE

    1.2.1 分页SQL  

<!-- 开头 -->
<isNotNull prepend="" property="end">
    SELECT * FROM (
</isNotNull>
<!-- 结尾 -->
<isNotNull prepend="" property="end">
    <![CDATA[ WHERE ROWNUM<=#END#) WHERE ROWINDEX>=#START# ]]>
</isNotNull>

    1.2.2 $column$

    执行sql语句时,控制台输出的语句,在该位置不会以问号的形式出现,而是直接填充其对应的值    

    1.2.3 日期类比较大小

<isNotEmpty prepend="and" property="BEGINDATE">
    <![CDATA[
        T.SCHEDULE_DATE >= TO_DATE(#BEGINDATE#,‘yyyy-MM-dd‘)
    ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="ENDDATE">
    <![CDATA[
        T.SCHEDULE_DATE <= TO_DATE(#ENDDATE#,‘yyyy-MM-dd‘)
    ]]>
</isNotEmpty>

 

 

IBATIS

标签:查询条件   开头   com   ram   12月   get   round   value   equal   

原文地址:http://www.cnblogs.com/Marydon20170307/p/6918057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!