1、mybatis核心,对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装;

2、使用if判断:

<where>
<if test="customer!=null">
<if test="customer.email!=null and customer.email!=''">
and email like '%${customer.email}%'
</if>
<if test="customer.name!=null and customer.name!=''">
and name like '%${customer.name}%'
</if>
</if>
</where>

3、sql片段:可以将sql语句语句中的某一片段提取出来,供其他statement引用:

<!-- 在sql片段中尽量不要使用<where></where>,因为一个statement可以引用多个sql片段,
若在sql片段中写入了<where></where>,则有可能出现sql语句拼接语法的错误 -->
<sql id="find_customer_where">
<if test="customer!=null">
<if test="customer.email!=null and customer.email!=''">
and email like '%${customer.email}%'
</if>
<if test="customer.name!=null and customer.name!=''">
and name like '%${customer.name}%'
</if>
</if>
</sql> <!-- 引用sql片段 -->
<select id="findCustomerList" parameterType="CustomerQueryVo" resultType="Customer">
select * from customers
<where>
<include refid="find_customer_where"></include>
</where>
</select>

4、foreach:

<sql id="find_customer_foreach">
<if test="ids!=null">
<!-- select * from customer where (id=1 or id=2 or id=5)-->
<foreach collection="ids" item="id" open="and (" close=")" separator="or">
id=#{id}
</foreach>
<!-- select * from customer where id in (1, 2, 5) -->
<!-- <foreach collection="ids" item="id" open="and id in(" close=")" separator=",">
#{id}
</foreach> -->
</if>
</sql>

mabatis--动态sql的更多相关文章

  1. 项目问题记录------Mabatis动态sql语句

    现在在做一个模糊查询功能,使用两个查询条件: 条件1:下拉框选择的产品名 条件2:输入框输入的用户名 需求1:下拉框的选项是从数据库里导出来的产品名,此外,添加一个选项"全部产品" ...

  2. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  3. Mysql - 游标/动态sql/事务

    游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...

  4. MyBatis4:动态SQL

    什么是动态SQL MyBatis的一个强大特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相似框架的经验,你就明白条件串联SQL字符串在一起是多么地痛苦,确保不能忘了空格或者在列表的最后的 ...

  5. 分享公司DAO层动态SQL的一些封装

    主题 公司在DAO层使用的框架是Spring Data JPA,这个框架很好用,基本不需要自己写SQL或者HQL就能完成大部分事情,但是偶尔有一些复杂的查询还是需要自己手写原生的Native SQL或 ...

  6. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

  7. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  8. 自定义函数执行动态sql语句

    --函数中不能调用动态SQL,使用用存储过程吧.如果还要对函数做其他操作,换成存储过程不方便,可以考虑把其他操作一起封装在存储过程里面.如:   create proc [dbo].[FUN_YSCL ...

  9. mybatis入门基础(五)----动态SQL

    一:动态SQL 1.1.定义 mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.2.案例需求 用户信息综合查询列表这个statement的定义使用动态s ...

  10. mybatis 动态sql表达式相关应用

    一.mybatis 表达式简介 对于mybatis3 ,提供了一种动态sql的方式.通过动态sql我们可以直接在mybatis 的xm映射文件中直接通过条件判断的方式进行查询添加的拼接.mybatis ...

随机推荐

  1. 第三方控件引起的"类型Universe无法解析程序集"的血案

    前一阵子在项目中添加了IrisSkin2皮肤控件,今天用VS打开悲剧了. 提示"类型Universe无法解析程序集:System.Design,Version=2.0.0.0,Culture ...

  2. ROS学习资源

    1.ROS机器人操作系统自主学习实践环境 https://www.shiyanlou.com/courses/854 2.ROS官方网站 http://wiki.ros.org/ ROS中文官方网站 ...

  3. Java 9 New Features

    Java 9 概述 1. jdk 9 的发布.经过 4 次跳票,历经曲折的 java 9 终于终于在 2017 年 9 月 21 日发布. 2. Java 9 中哪些不得不说的新特性?java 9 提 ...

  4. Java 去除字符串前后指定的字符

    一.去除字符串中的中文字符. /** * 去除字符串中的中文字符 * * 示例:brandName值为: 中国ABCD88深圳 * * 返回: ABCD88 * * @param brandName ...

  5. Nexus-配置VDC

    1.配置资源模板This example shows how to configure a VDC resource template: vdc resource template TemplateA ...

  6. 使用类进行面向对象编程 Class 实例化 和 ES5实例化 对比,继承

    ES5 写法 function Book(title, pages, isbn) { this.title = title; this.pages = pages; this.isbn = isbn; ...

  7. Python学习第二十一课——Mysql 对数据库的基本操作

    数据库操作(DDL) 在数据库下创建表(create_table) 创建表代码块: CREATE TABLE employee( id TINYINT PRIMARY KEY auto_increme ...

  8. pandas读取文件的read_csv()方法

    import pandas as pd pd.read_csv(filepath_or_buffer,header,parse_dates,index_col) 返回数据类型:DataFrame:二维 ...

  9. Mysql基本用法-01

    #登录数据库 mysql -hlocalhost -uroot -p; #修改密码 mysqladmin -uroot -pold password new; #显示数据库 show database ...

  10. UICollectionViewCell点击高亮效果(附带效果GIF)

    首先效果如下: 背景是这样的:UI上使用的是UICollectionView,所以后面会使用它的协议方法完成. 实现思路是这样的:高亮状态+点击后短时间内保持颜色变化 实现的代码参考如下: // Ce ...