| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> (狂神)mybatis笔记-----09 -> 正文阅读 |
|
[大数据](狂神)mybatis笔记-----09 |
12.动态SQL什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句 利用动态 SQL,可以彻底摆脱这种痛苦。 如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。
搭建环境 ?创建一个基础工程 1.导包 2.编写配置文件 3.编写实体类 ? 4.编写实体类对应的Mapper接口和Mapper.xml文件 我们这里存在数据库字段名和实体类属性名不一致的情况: 所以我们要使用到xml里的配置 核心配置文件中配置:
? 添加数据: 接口: xml:
测试:
IF接口: ?xml: 测试: 查询全部:
? 按照title查询:
? ? ?根据title和author查询;
根据author查询:
trim(where, set)?where标签: where?元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where?元素也会将它们去除。(可以用于代替where 1=1) 改写上一个代码(if):
?我们发现它自动去除了and 如果我们什么都不传: 我们来看看输出的结果:
它可以自动把where去掉 ?choose(when,otherwise)?接口: ?xml: 不加title和author的查询(按views查询): ?
? 现在同时传title和views
我们发现我们此时title条件满足,就不再判断views了 三个参数都传递时:
?同理,只要满足一个条件,它就结束了。
第一个条件不满足就去判断第二个条件 set: 接口:
更改信息操作: 原表:
xml:
? ? 测试: ? ? ?
?只改作者名字:
trim:很少用 所谓的动态SQL,本质还是SQL语句,只是我们可以在SQL层面,去执行一个逻辑代码 if where,set,choose,when SQL片段有的时候,我们可能会将一些功能的部分抽取出来,方便复用!
?注意事项: 最好基于单表来定义SQL片段 不要存在where标签 Foreach
?接口: xml:
? ?测试:
没有加入id条件时: ? 能查到全部信息,where自动省略
?动态SQL就是在拼接SQL语句,我们只要保证SQL的正确性,按照SQL的格式,去排列组合就可以了 建议: 先在Mysql中写出完整的SQL,再对应的去修改成为我们的动态SQL实现通用即可! ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/28 20:20:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |