动态sql

  9.1 什么是动态sql

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

  9.2 需求

用户信息综合查询列表和用户信息查询列表总数这两个statement的定义使用动态sql。

对查询条件进行判断,如果输入参数不为空才进行查询条件拼接。

  9.3 mapper.xml

  9.4 测试代码

9.5 sql片段

  9.5.1 需求

将上边实现的动态sql判断代码块抽取出来,组成一个sql片段。其它的statement中就可以引用sql片段。

方便程序员进行开发。

    9.5.2 定义sql片段

    9.5.3 引用sql片段

在mapper.xml中定义的statement中引用sql片段:

  9.6 foreach

向sql传递数组或List,mybatis使用foreach解析

    9.6.1 需求

在用户查询列表和查询总数的statement中增加多个id输入查询。

sql语句如下:

两种方法:

SELECT * FROM USER WHERE id=1 OR id=10 OR id=16

SELECT * FROM USER WHERE id IN(1,10,16)

    9.6.2 在输入参数类型中添加List<Integer> ids传入多个id

    9.6.3 修改mapper.xml

WHERE id=1 OR id=10 OR id=16

在查询条件中,查询条件定义成一个sql片段,需要修改sql片段。

sql只接收一个数组参数,这时sql解析参数的名称mybatis固定为array,如果数组是通过一个pojo传递到sql则参数的名称为pojo中的属性名。

index:为数组的下标。

item:为数组每个元素的名称,名称随意定义

open:循环开始

close:循环结束

separator:中间分隔输出

    9.6.4 测试代码

    9.6.5 另外一个sql的实现

最新文章

  1. 基于轻量型Web服务器Raspkate的RESTful API的实现
  2. 漫谈c++11 Thread库之使写多线程程序
  3. Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
  4. div中的内容垂直居中的五种方法
  5. 调用微信退款接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法
  6. MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档[原创]
  7. 读《C# 和 Java 的比较》有感
  8. 移动硬盘安装linux系统小记
  9. 去掉MySQL字段中的空格
  10. ACM学习-POJ-1003-Hangover
  11. @property (nonatomic, getter = isExpanded) BOOL expanded;
  12. iOS应用 跳转到系统的设置界面
  13. Android 学习笔记之 个人认为最简单的查看Android源码方案
  14. 头文件string.h里的函数
  15. PHP函数和数组
  16. iframe 里的高度自适应
  17. Linux和Shell教程
  18. Confluence 6 通过 SSL 或 HTTPS 运行 - 为 HTTPS 修改你的 Confluence 基础 URL
  19. vue 刷新当前页面
  20. 线程---同步(synchronized)

热门文章

  1. javascript 触发器
  2. css3实现jquery mobile的页面过度原理
  3. eclipse 修改java代码不重启服务器 生效配置
  4. webRTC开启摄像头
  5. buildroot 制作的文件系统烧入到nand中打开设备没有权限
  6. 关于shm_open和shm_unlink的使用问题(要连接库的原因)
  7. Android——滚动视图(ScrollView)图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟
  8. 编译器内置宏__LINE__&amp;__FUNCTION__
  9. 双行表头DatagridView的简单实现
  10. Logrotate日志轮巡missingok: 在日志轮循期间,任何错误将被忽略