02 - Unit09:动态SQL
动态SQL
什么是?
系统运行过程中,动态生成的SQL语句
为什么?
当我们不能确定用户操作,所要使用的具体SQL的时候.
案例: 搜索笔记功能 按用户名 笔记本名 笔记名 搜索
搜索功能 按用户 A B C
select * from cn_note where userName=#{} and bookName=#{} and noteTitle=#{}
如何实现?
{id}
if标签
if起到选择判断的作用
语法:
应用:
<select id="findNotes" parameterType="Map">
select * from cn_note
where cn_note_status_id="1"
<if test="userName!=null">
and cn_user_name=#{userName}</if>
<if test="bookName!=null">
and cn_notebook_name=#{bookName}</if>
<if test="noteName!=null">
and cn_note_name=#{noteName}</if>
</select>
相当于JAVA中的switch语句,当匹配(when)到符合条件的语句后,直接输入,结束匹配;
当没有匹配到任何条件,最后输出otherWise
语法:
<choose>
<when test=""></when>
<when test=""></when>
<when test=""></when>
<otherwise></otherwise>
</choose>
where/set
在开始标签的位置自动输入 where关键字.
在拼凑SQL语句的过程中,会自动处理多余的and/or/空格.
语法:
<where>
<if test=""></if>
<if test=""></if>
</where>
<set>
<if test=""></if>
<if test=""></if>
</set>
trim
语法:
<trim prefix="where" prefixOverrides="and/or"></trim>
练习:批量删除笔记
delete from cn_note where cn_note_id
in (#{id1},#{id2},#{id3}.....)
<foreach collection="list/array"
item="id"
open="("
close=")"
separator=",">
#{id}
</foreach>
组合查询笔记的功能
标题 状态 开始时间 结束时间 搜索按钮
搜索列表
标题 状态 创建时间
发送Ajax请求
绑定事件:搜索按钮的单击事件
获取参数:标题 状态 开始时间 结束时间
请求地址:/note/manage.do
服务器处理
- Controller.find(String userId,String title,String
status,Stringbegin,String end)
- Service.find(String userId,String title,String status,
String begin,String end)
NoteDao.findNotes(Map params)
Mapper select * from cn_note 动态SQL
Ajax回调处理
- success
遍历返回的数据集合,显示在结果列表中
- error
提示:搜索失败
作业:重构搜索笔记需求的mapper定义
使用
使用
02 - Unit09:动态SQL的更多相关文章
- mybatis——动态sql
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwise) ...
- 动态游标(例如表名作为参数)以及动态SQL分析
表名作为参数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; T ...
- 超全MyBatis动态SQL详解!( 看完SQL爽多了)
MyBatis 令人喜欢的一大特性就是动态 SQL. 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的. MyBatis 动态 SQL 的出现, 解决了这个麻烦. My ...
- 两种动态SQL
参考:http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.htmlhttp://www.cnblogs.com/xbf321/arch ...
- MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
目录 0 一起来学习 mybatis 1 数据准备 2 if 标签 2.1 在 WHERE 条件中使用 if 标签 2.1.1 查询条件 2.1.2 动态 SQL 2.1.3 测试 2.2 在 UPD ...
- db2存储过程动态sql被截断
编写存储过程,使用动态sql时,调试时发现变量赋值后被截断. 关键代码如下: 实现的效果是先把上下游做对比的sql语句和相关参数存入RKDM_DATA_VOID_RULE, 执行存储过程后把两个sql ...
- (2.3)DDL增强功能-流程化控制与动态sql
1.流程控制 在T-SQL中,与流程控制语句相关的关键字有8个: BEGIN...END BREAK GOTO CONTINUE IF...ELSE WHILE RETURN WAITFOR 其实还可 ...
- 动态游标(比如表名作为參数)以及动态SQL分析
表名作为參数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; T ...
- mysql 存储过程中使用动态sql语句
Mysql 5.0 以后,支持了动态sql语句,我们可以通过传递不同的参数得到我们想要的值 这里介绍两种在存储过程中的动态sql: set sql = (预处理的sql语句,可以是用concat拼接的 ...
随机推荐
- 20145120 《Java程序设计》实验五实验报告
20145120 <Java程序设计>实验五实验报告 实验名称:Java网络编程 实验内容: 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验内容. ...
- Kali2018.1
目录 制作U盘启动盘 安装 Kali Linux 之后的事 更新源 配置 Zsh 配置 Vim 修改 Firefox 语言为中文 安装 Gnome 扩展 美化 安装 Google 拼音输入法 安装常用 ...
- ccf 行车路线
问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...
- OpenDayLight Helium实验一 OpenDaylight的C/S模式实验
本文基于:OpenDaylight的C/S模式实验而成 C/S 结构,即大家熟知的客户机和服务器结构.它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Ser ...
- Android -- Activity的生命周期,Activity四种启动模式 Standard, SingleTop,SingleTask,SingleInstance
1. 示例图 . 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: Activity的完整生命周期自第一次调用onCreate()开始,直至调 ...
- 3个方法实现JavaScript判断移动端及pc端访问不同的网站
3个方法比较简单,分别在页面头部加入如下js代码: 对于简单地直接从www.maslinkcom跳转到m.maslink.com,此方法仅从首页而言: <script>(function ...
- 一定要用Windows自带的记事本编辑 applicationHost.config
访问IIS时,发生了一个 HipIISEngineStub.dll不能读取的问题.(Windows Event可以确认). 很容易在网上找到了对策, http://chrisfleischhacker ...
- Python 实现图片上表格的写入
直接上代码:import matplotlib.pylab as pltimport numpy as npplt.figure()axes=plt.gca()y= np.random.randn(9 ...
- poj3281网络流之最大流
加一个源点和汇点,把每头牛拆成两个点,不拆点的话可能会出现多对食物与饮料被一个牛享用的情况,拆点后流量为1,不能同时通过了 然后用最大流处理,每个链接边都是1 #include<map> ...
- Linux下weblogic启动报错unable to get file lock的问题
非正常结束weblogic进程导致weblogic无法启动 由于先前服务器直接down掉了,所有进程都非正常的进行关闭了,也就导致了下次启动weblogic的时候报了以下错误:<2012-3-2 ...