mybatis动态SQL
1.sql片段:sql语句中重复使用的可以提取成sql片段供调用(如数据表中的字段)
sql标签是sql片段,id是被调用时用的
<sql id="all"> u_id,u_username,u_password,u_sex,u_createtime,u_createtime,u_delete </sql> |
sql片段用include标签调用
<include refid="all"></include> |
2.where+if
where标签会在返回的sql语句前加where再去除and或or
<select id="selectByWhere" resultMap="BaseMap"> select <include refid="all"></include> from tb_user <where> <if test="uid!=0"> and u_id=#{uid} </if> <if test="username!=null and username!=''"> <!-- 模糊查询 --> and u_username like concat('%',#{username},'%') </if> </where> </select> |
以上还用了模糊查询:用concat函数拼接%
3.set+if
set标签会在返回的sql前加set再去除最后的,(逗号)
<update id="update"> update tb_user <set> <if test="username!=null and username!=''"> u_username=#{username}, </if> <if test="password!=null and password!=''"> u_password=#{password}, </if> <if test="usex!=null and usex!=''"> u_sex=#{usex}, </if> <if test="udelete!=null and udelete!=''"> u_delete=#{udelete}, </if> </set> where u_id=#{uid} </update> |
4.trim+if:里面有属性:
a) prefix:前缀,在sql语句前加xxx
b) suffix:后缀,在sql语句后加xxx
c) prefixOverride:替换sql语句前的xxx
d) suffixOverride:替换sql语句后的xxx
5.choose+when+otherwise
从上往下选择,有一个符合就跳出
<!-- 根据一个不限定的条件查询 --> <select id="select" resultMap="BaseMap"> select <include refid="all"></include> from tb_user <where> <choose> <when test="uid!=0"> and u_id=#{uid} </when> <when test="username!=null and username!=''"> and u_username like concat('%',#{username},'%') </when> <otherwise> </otherwise> </choose> </where> </select> |
6.foreach
遍历数组或集合(根据多个id查询用in或or)
<!-- 根据多个id查询 --> <select id="selectByIds" resultMap="BaseMap"> select <include refid="all"></include> from tb_user <where> <foreach collection="ids" open="u_id in(" close=")" item="id" separator=","> #{id} </foreach> </where> </select> |
原文地址:https://www.cnblogs.com/kfsrex/p/11439588.html
- 如何在Redhat7.3的CDH5.14中启用Kerberos
- 如何使用SAML配置Cloudera Manager的身份验证
- 如何使用Shibboleth搭建IDP服务并集成OpenLDAP
- 如何获取Hive正在执行或者已结束的的MapReduce作业的SQL语句
- 如何启用Oozie的HA
- 如何使用Oozie API接口向Kerberos环境的CDH集群提交Spark作业
- 如何降级Cloudera Manager和CDH
- 如何在CDH中安装和使用StreamSets
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Shell工作流
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Java作业
- 如何通过Livy的RESTful API接口向Kerberos环境的CDH集群提交作业
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Spark作业
- Joomla 权限提升漏洞(CVE-2016-9838)分析
- Firefox - SVG cross domain cookie vulnerability
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- python利用os模块编写文件复制功能——copy()函数用法
- 解决python 虚拟环境删除包无法加载的问题
- Laravel框架路由管理简单示例
- php + WebUploader实现图片批量上传功能
- php查询内存信息操作示例
- ThinkPHP3.2框架操作Redis的方法分析
- python实现图像外边界跟踪操作
- php微信分享到朋友圈、QQ、朋友、微博
- Numpy 多维数据数组的实现
- 使用matplotlib的pyplot模块绘图的实现示例
- PHP get_html_translation_table()函数用法讲解
- Laravel中10个有用的用法小结
- PHP7 echo和print语句实例用法
- python上selenium的弹框操作实现
- php分享朋友圈的实现代码