| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:30:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |