Mybatis动态sql和sql片段


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.alibaba.uyuni.dal.mapper.StudentDoMapperExt" >

<select id="getPageList" parameterType="int" resultType="com.alibaba.uyuni.biz.common.bo.dto.StudentDto">

select id ,name,age,sex,grade,class as team,teacher from student where is_deleted=‘n‘ order by id limit #{offset},8 
</select>

<select id="getTotoalNum" resultType="int" >
select count(*) from student where is_deleted=‘n‘
</select >
<select id="condtionQuery" parameterType="com.alibaba.uyuni.biz.common.bo.dto.StudentDto" resultType="com.alibaba.uyuni.biz.common.bo.dto.StudentDto">
select id ,name,age,sex,grade,class as team,teacher from student 
      <where>
     <include refid="query_student_where"/>
     </where>
</select>

<sql id="query_student_where">

    <if test=‘name != null and name != ""‘>
               and  name like ‘%${name}%‘
               </if>
              <if test=‘age != null and age != ""‘>
               and  age = #{age}
               </if>
               <if test=‘sex != null and sex != ""‘>
               and  sex = #{sex}
               </if>
                 <if test=‘ grade != null and grade != ""‘>
               and  grade = #{grade}
               </if>
                 <if test=‘ team != null and team != ""‘>
               and  class = #{team}
               </if>
                  <if test=‘ teacher != null and teacher != ""‘>
               and  teacher = #{teacher}
               </if>
              and is_deleted=‘n‘
</sql>

</mapper>

使用了<where>标签就不需要加where关键字,<where>标签会自动去掉第一个条件的and,or

时间: 01-20

Mybatis动态sql和sql片段的相关文章

笔记:MyBatis 动态SQL

有时候,静态的SQL语句并不能满足应用程序的需求.我们可以根据一些条件,来动态地构建SQL语句.例如,在Web应用程序中,有可能有一些搜索界面,需要输入一个或多个选项,然后根据这些已选择的条件去执行检索操作.在实现这种类型的搜索功能,我们可能需要根据这些条件来构建动态的SQL语句.如果用户提供了任何输入条件,我们需要将那个条件 添加到SQL语句的WHERE子句中. MyBatis通过使用<if>,<choose>,<where>,<foreach>,<

MyBatis动态SQL小结

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: 等线 } .MsoChpDefault { font-family: 等线 } div.WordSection1 { } ol { margin-bottom: 0cm } ul { margin-bottom: 0cm } Mybati

MyBatis动态SQL————MyBatis动态SQL标签的用法

1.MyBatis动态SQL MyBatis 的强大特性之一便是它的动态 SQL,即拼接SQL字符串.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦. 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中. 动态 SQL 元素和

mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中的choose 很类似.3. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)4. where (主要是用来简化sql语句中where条件判断的,能智能的处理 a

用Groovy模板写MyBatis动态SQL

MyBatis动态SQL简介 MyBatis有个强大的功能,动态SQL.有了这个功能,定义在Mapper里的SQL语句,就不必是静止不变的了,而是可以根据传入的参数,动态调整.下面是MyBatis官方文档里的一个if语句的例子: <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = 'ACTIVE' <if test=

Mybatis 动态sql(转载)

原文地址:http://www.cnblogs.com/dongying/p/4092662.html 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误.Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率.下面就去感受Mybatis动态SQL的魅力吧: 1

mybatis 动态sql语句

mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中的choose 很类似. 3. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀) 4. where (主要是用来简化sql语句中where条件判断的,能智能的

mybatis 动态sql和参数

mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对Java对象图进行导航. OGNL表达式的基本单位是"导航链",一般导航链由如下几个部分组成: 属性名称(property) 方法调用(method invoke) 数组元素 所有的OGNL表达式都基于当前对象的上下文来完成求值运算,链的前面部分的结果将

Mybatis:在sqlBuilder中动态的生成sql语句

最近项目当中使用到MyBatis 动态语句生成的功能,我使用的是sqlBuilder,话不多说,直接上代码,StockMarketProvider.java: public String selectByStockIdSql(){ BEGIN(); SELECT("*"); FROM(TABLE_NAME); WHERE("stock_id = #{0}"); return SQL(); } public String updateByStockIdSql(){ B

MyBatis学习17-动态sql

1.mybatis核心:对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 2.问题来源 <select id="findUserList" parameterType="UserQueryVo" resultType="UserCustom"> select * from user where sex= #{userCustom.sex} and username like '%${userCustom.us