`
atgoingguoat
  • 浏览: 196759 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

iBATIS 3 动态SQL

阅读更多

字符串是:<if test="status != null">  
INT 是:<if test="number!= 0">  

 

        WHERE A.NN_ID = B.PARENT_NN_ID   
        AND A.NN_ID = C.NN_ID   
        <if test="id != null">  
            AND A.NN_ID = #{id}   
        </if>  
        <if test="category != null">  
            AND A.CATEGORY = #{category}   
        </if>  
        <if test="status != null">  
            AND A.WF_STATUS = #{status}   
        </if>  
    </select>  

<sql id="dynamicWhere">
  <where>
        <if test="userId != null">
    and user_id = #{userId}
   </if>
        <if test="username != null">
    and username = #{username}
   </if>
        <if test="password != null">
    and password = #{password}
   </if>
        <if test="birthDate != null">
    and birth_date = #{birthDate}
   </if>
        <if test="sex != 0">
    and sex = #{sex}
   </if>
        <if test="age != 0">
    and age = #{age}
   </if>
  </where>
 </sql>

    <select id="findAll" resultMap="SitePartResult2">
  SELECT <include refid="sitePartColumns" />
     <![CDATA[
      FROM tb_site_part_info
     ]]>
 </select>

 

说动态SQL,这是iBATIS最强大的地方,如果熟悉iBATIS 2的话,一眼可以看出没有了<isNotNull>、<isNotEmpty>、<isLessThan>等熟悉的标签,不错,iBATIS使用了类似JSTL的标签<if>、<choose>、<when>、<otherwise>、<foreach>等来代替原来的标签,并且传值方式由#property name#, $property name$变为了#{property name}和${property name},就我个人而言,这些标签感觉没有iBATIS2用上去爽。

  此外根元素<mapper>的属性namespace在iBATIS 3中是required,而不像iBATIS 2中是可选的,可要可不要。

  下面来说说新增元素<association>和<collection>,<association>对应于Java中的Has A模型,也可以理解为数据库中一对一关系,拿上述例子来说,每条消息的概要信息与消息内容是分别存放在两张Table中的,可以通过上述方法一次性将其取出来,而不需要执行多次查询。而<collection>有点类型主从表关系,即one-to-many模型。

  查询标签<select>也有所改变,首先是属性名称,由原来的parameterClass改为了parameterType,resultClass与变为了resultType,此外需要注意的是如果传入的参数类型为复杂对象,如Bean,则需要在参数后面加上jdbcType属性来指定对应数据库表列的类型,如#{userName, jdbcType=VARCHAR},如果传入的是基本类型,像int,long之类的,则不需要指定。

  另外的变化就是执行方法上的变化,使用select, selectOne, selectList等替代了原来的方法,大家可以参考其API,我在些就不多说了。

 

 

分享到:
评论
3 楼 atgoingguoat 2010-09-02  
<select id="getTagSitePartList" resultMap="SitePartResult" parameterType="java.util.HashMap">
  SELECT   t1.id_,t1.part_name_ ,
        t1.lower_node_ ,t1.part_parent_id_,t1.show_type_ ,
        t1.sort_value_ ,t1.effective_ ,t1.part_notes_,t1.insert_time_
     from tb_site_part_info t1,tb_site_channels_part_real t2,tb_site_channels_info t3
   where t3.id_=t2.channels_id_ and t2.part_id_=t1.id_
       <if test="@Ognl@isNotEmpty(partName)">
AND t1.part_name_ like '%${partName}%'
</if>
       <if test=" lowerNode !=0">
AND t1.lower_node_ = #{lowerNode}
</if>
       <if test=" partParentId !=0">
AND t1.part_parent_id_ = #{partParentId}
</if>
       <if test=" showType !=0">
AND t1.show_type_ = #{showType}
</if>
       <if test=" effective !=0">
AND t1.effective_ = #{effective}
</if>
       <if test=" channelsId !=0">
AND t2.channels_id_ = #{channelsId}
</if>
<if test="@Ognl@isNotEmpty(sortColumns)">
ORDER BY ${sortColumns}
</if>
       <if test="@Ognl@isNotEmpty(count)">
limit #{count}
</if>
</select>
2 楼 鱼言风语 2010-09-02  
fordybeach 写道
ibatis3 能不能把map文件放到jar包里面呢?


2不就可以了吗?
1 楼 fordybeach 2010-09-02  
ibatis3 能不能把map文件放到jar包里面呢?

相关推荐

    ibatis动态SQL标签用法

    iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...

    iBatis的动态SQL语句

    ### iBatis中的动态SQL语句详解 #### 引言 在进行数据库操作时,我们经常需要根据不同的条件构建不同的SQL语句。这种需求在实际开发中极为常见,尤其是在处理复杂的查询逻辑时。iBatis(现在通常被称为MyBatis)...

    ibatis的dynamicSQL中,关于prepend的使用

    在探讨ibatis中的动态SQL(Dynamic SQL)及`prepend`的使用时,我们首先需要对ibatis有一个基本的理解。ibatis是一种开源的数据访问层框架,它简化了Java应用程序与数据库之间的交互过程。通过使用XML配置文件来定义...

    在ibatis日志信息中打印SQL语句的方法(个人总结)

    3. **启用iBatis日志**:在MyBatis的配置文件(mybatis-config.xml)中,确保日志工厂已经被正确地设置。例如: ```xml ... ... ... ... ``` 至此,你应该能在控制台或指定的日志文件中看到iBatis执行...

    转ibatis动态sql - phoebus0501 - 博客园.mht

    转ibatis动态sql - phoebus0501 - 博客园.mht

    打log4j日志-ibatis的sql输出

    对于Ibatis,这是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了动态SQL的能力。在默认情况下,Ibatis并不会自动打印执行的SQL语句,但通过配置,我们可以使Ibatis在运行时输出SQL,这对于调试和性能...

    ibatis 开发指南 和 iBATIS-SqlMaps两本图书

    5. **动态SQL**:讲解如何使用iBATIS的动态元素来构建灵活的SQL语句,以应对复杂的查询需求。 6. **API使用**:介绍SqlSession、SqlSessionFactory、Executor等关键接口和类的使用方法。 7. **缓存机制**:解释...

    ibatis打印sql

    iBATIS支持动态SQL,即在运行时根据条件构建SQL。通过打印SQL,可以验证动态条件是否正确地被插入到最终执行的SQL中。 5. **性能优化**: 打印SQL还能帮助优化数据库查询性能。通过分析SQL语句,可以识别慢查询并...

    ibatis UPDATE 动态XML与insert

    标题 "ibatis UPDATE 动态XML与insert" 涉及到的是MyBatis框架中对数据库数据进行更新(UPDATE)和插入(INSERT)操作的动态XML配置方式。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...

    ibatis常用的sql

    根据提供的文件信息,本文将对ibatis常用的SQL语句进行详细的解析与说明。这些SQL语句主要用于Oracle数据库中,涉及到了删除、插入以及查询等基本操作,并且在ibatis框架中实现了参数化处理。 ### 一、删除操作 ...

    查看ibatis后台sql

    通过java程序查看ibatis配置文件中的sql语句(注:无法查看变量值)

    ibatis常用sql语句

    iBATIS的核心功能在于其强大的SQL映射能力和动态SQL生成机制,这使得开发人员能够灵活地处理复杂的数据库交互需求。 ### 输入参数为单个值 在iBATIS中,当输入参数为单个值时,如示例中的`long`类型,可以使用`...

    ibatis_3.0_Dynamic_Sql_设计解析(并与2.x的差异)

    3. **性能优化**:通过内部机制的优化,ibatis 3.0在处理Dynamic Sql时的性能得到了提升,尤其是在频繁构建动态SQL的场景下,这种优化尤为重要。 综上所述,ibatis 3.0在Dynamic Sql方面的设计和实现相较于2.x版本...

    ibatis2.0+sqlserver2005环境搭建

    3. SQL Server JDBC驱动:Ibatis通过JDBC与数据库交互,因此需要对应的驱动jar包。对于SQL Server 2005,你需要`sqljdbc4.jar`。 接下来,我们逐步进行环境配置: **1. 创建项目结构** 创建一个新的Java项目,并...

    iBATIS-SqlMaps-中文教程

    5. **动态SQL**:iBATIS的一大亮点是其强大的动态SQL能力,可以实现条件查询、循环拼接SQL等复杂逻辑,无需编写大量Java代码。 6. **Mapper接口**:iBATIS 2.3版本引入了Mapper接口,将XML配置与Java代码更好地结合...

    08_ibatis教程_sql主键生成方式.zip

    3. **Identity(自动增长)**:对于支持自动增长主键的数据库,如MySQL,Ibatis可以通过`identityInsert`属性开启自动增长功能。插入数据后,数据库会自动为新记录分配一个唯一的主键值。 4. **HiLo算法**:在大...

    ibatis sql生成工具

    此外,该工具可能还包含了对复杂的查询条件的支持,比如模糊搜索、分页查询等,这些在生成的SQL中会以动态SQL的形式出现,使得代码更加简洁和易于维护。对于大型项目而言,这种自动化生成的功能能够显著减少编码时间...

    iBATIS-SqlMaps2入门代码文档

    ### iBATIS-SqlMaps2入门代码文档知识点详解 #### 一、简介 iBATIS-SqlMaps2是一款用于简化Java应用程序与数据库交互过程的框架。该框架通过配置文件定义了对象关系映射规则,使得开发者能够更加专注于业务逻辑而...

    ibatis-sqlmaps-2_cn

    此外,教程还会涵盖动态SQL,这是IBATIS的一大亮点,允许在运行时构建和修改SQL语句,提高了代码的复用性和可维护性。 在使用IBATIS的过程中,你可能会遇到参数映射和结果映射的问题。《ibatis-sqlmaps-2_cn》将...

Global site tag (gtag.js) - Google Analytics