`
chengjisihan
  • 浏览: 29382 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MyBatis运用心得(3)

阅读更多
2.Dynamic SQL
  动态sql是MyBaits的优点之一,在以往的IBatis就有动态sql,在此只是简要概述
  在MyBatis中,sql的定义基于2中方式,一种是传统的XML文件,一种是Java的Mapper类生成
  1)基于Mapper的动态SQL:
    此部分在"MyBatis运用心得(2)"中已经叙述,主要是利用SelectBuilder和SqlBuilder,还是十分容易理解的。

  2)基于XML文件的动态SQL:
    主要是利用一些标签:<if>,<where>,<when>,<choose>,<otherwise>,<set>,<trim>,<foreach>
    这些标签有一些与jstl比较相近,如<when>,<choose>,<otherwise>,<if>,<foreach>等。
    <where>的作用主要是在一个where语句中如果有多个<if>,有可能会多出and和or连接符,如:
where
<if test="name != null">
    name = #{name}
</if>
<if test="id != null">
    and id = #{id}
</if>

     当name为null,id不为null时,sql为where and id = ?,出现错误。写成
<where>
    <if test="name != null">
        name = #{name}
    </if>
    <if test="id != null">
        and id = #{id}
    </if>
</where>

    如果where后面第一个字符串时and或or,将会跳过

    <set>的意思和where差不多,是实现update功能时一次set多个域
update A
<set>
    <if test="name != null">
        name = #{name},
    </if>
    <if test="id != null">
        id= #{id}
    </if>
</set>


    在此需要说明的是<if>,<when>标签只能做一些基本的条件判断,如"=",">","<",但如果要进行复杂条件判断,比如调用一个Java对象的方法,则显得力不从心,如果是基于Mapper的sql实现,SelectBuilder可以做的很好,但如果基于XML,就要求助于强大的表达式工具:ognl
    比如现有一个OgnlHelper类,其中有一个判断是否有特殊字符的static方法hasSpecialChar,则可以通过ognl表示给出
<where>
    <choose>
        <when test="@com.test.OgnlHelper@hasSpecialChar(name)">
            and name like '%'||#{name}||'%' escape '\'
        </when>
        <otherwise>
            and name like '%'||#{name}||'%'
        </otherwise>
    </choose>
</where>
3
1
分享到:
评论

相关推荐

    ssm整合项目+mybatis拦截器.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    springboot整合mybatis(SSM项目整合).zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatisSpringMVC.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    SSM整合——基于 IDEA Maven项目的 Spring + SpringMVC + MyBatis MVC架构整合.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    本项目是一个基于SSMM(SpringMVC+ Spring + Mybatis + Redis + Maven)

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    本项目是基于 SpringMVC+Spring+MyBatis (SSM) 架构的高效率便捷开发框架.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    SSM积分系统和商品检索系统(Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN).zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    一个简单的SSM项目,用idea开发,maven管理的spring+springmvc+mybatis项目.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    简单的记账系统:使用Maven作为项目管理,SSM(Spring,SpringMVC,MyBatis)开发框架。.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    一个运用了MVC模式及JavaWeb三大框架的注册和登录系统.zip

    技术栈概览:涵盖了Spring、SpringMVC、MyBatis等主流JavaWeb框架的使用,以及MySQL数据库的管理。 项目模块解析:按照实际项目结构,分模块介绍了后台管理、用户权限管理、数据报表生成等功能的具体实现。 代码与...

    J2EE项目系列(一)--运用MVC模式及JavaWeb三层框架的学生管理系统。.zip

    技术栈概览:涵盖了Spring、SpringMVC、MyBatis等主流JavaWeb框架的使用,以及MySQL数据库的管理。 项目模块解析:按照实际项目结构,分模块介绍了后台管理、用户权限管理、数据报表生成等功能的具体实现。 代码与...

    SSM小项目,巩固和复习应用SSM框架做项目的过程。.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    SSM实战项目(2)——图书管理系统.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    ssm传智健康项目.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    SSM电商项目.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    基于ssm的宠物医院项目.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    尚筹网项目-SSM-IDEA.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    使用SSM开源框架实现客户管理系统的小项目.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

    将微信支付和支付宝支付集成到ssm项目中.zip

    实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您...

Global site tag (gtag.js) - Google Analytics