MyBatis学习笔记(3)-动态SQL_"select id=\"finduserlist\" parametertype=\"uservo-程序员宅基地

技术标签: Java  

动态SQL是MyBatis最核心的功能和最强大的特性之一,在使用原生JDBC进行连接数据库时,若要完成SQL语句拼接,程序员需要小心翼翼地完成代码,非常不方便,而MyBatis基于OGNL表达式的动态SQL机制,对SQL语句进行灵活操作,通过表达式进行判断,对SQL进行灵活拼接、组装。

总体说来mybatis 动态SQL 语句主要有以下几类:

  1. if 语句 (简单的条件判断)
  2. where (主要是用来简化sql语句中where条件判断的,能智能的处理 and or ,不必担心多余导致语法错误)
  3. foreach (在实现 mybatis in 语句查询时特别有用)
  4. choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中的choose 很类似.
  5. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)
  6. set (主要用于更新时)

其中前三个是最常用的,本文也主要介绍这三种语句。

If语句

在UserMapper.xml文件中作如下配置

<!-- 传递pojo综合查询用户信息 -->
	<select id="findUserList" parameterType="user" resultType="user">
		select * from user 
		where 1=1 
		<if test="id!=null and id!=''">
		and id=#{id}
		</if>
		<if test="username!=null and username!=''">
		and username like '%${username}%'
		</if>
	</select>

即完成了空字符串校验

Where

可用来简化上文程序中的and,将上文程序改为

<select id="findUserList" parameterType="user" resultType="user">
		select * from user 
		<where>
		<if test="id!=null and id!=''">
		and id=#{id}
		</if>
		<if test="username!=null and username!=''">
		and username like '%${username}%'
		</if
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tianshan2010/article/details/103987492

智能推荐

MySQL创建数据库(CREATE DATABASE语句)_mysql create database collate-程序员宅基地

文章浏览阅读9.4k次,点赞3次,收藏10次。在 MySQL 中,可以使用CREATE DATABASE语句创建数据库,语法格式如下:CREATE DATABASE [IF NOT EXISTS] <数据库名>[[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];[ ]中的内容是可选的。语法说明如下:&l..._mysql create database collate

Pandas groupby保存到dataFrame_pandas groupby转dataframe-程序员宅基地

文章浏览阅读1.9w次,点赞12次,收藏26次。直接使用reset_index方法删除原来索引 test_df = pd.DataFrame({'a':[1,1,3,2],'b':[1,4,6,9],'c':[1,4,8,12]})g_df =test_df['c'].groupby([test_df['a'], test_df['b']]).sum()c_df = pd.DataFrame(g_df)c_df.reset_inde..._pandas groupby转dataframe

阿里云盘每天免费领取1.5T容量!附福利码。-程序员宅基地

文章浏览阅读7.1k次。最近,很多读者在找阿里云盘的福利码,小编也不例外!这不,发现了大宝藏。每天可以领取阿里云云盘1.5T容量!让我们来看看:公测期间,阿里云盘有一个利用福利码兑换云盘空间的活动。下面来说一下如何利用福利码兑换空间:进入网盘App,点击头像,找到【福利社】,点击右上角的【兑换福利码】,输入福利码,即可兑换空间。每个福利码少则200G,多达500G,福利码不同,兑换的空间也不同,每天可以免费兑换三次,当然,仅限活动期间兑换,快来领取吧!活动地址:https://mp.weixin.qq.com/s/_阿里云盘每天免费领取1.5t容量

Oracle 触发器详解(trigger)_oracle trigger-程序员宅基地

文章浏览阅读2.2w次,点赞37次,收藏149次。文章目录 1 概述2 触发器管理2.1 创建触发器2.1.1 for each row2.1.2 follows2.1.3 when 2.2 查询触发器2.3 删除触发器2.4 常用属性2.4.1 inserting、updating、deleting2.4.2 now、old 3 触发器分类3.1 DML 触发器3.1.1 单列触发:of 列名 3.2 DDL 触发器3.3 Databse 触发器3.4 instead of 替换触发器 1 概述 1. 触发器是什么.._oracle trigger

android基础(三)ContentProvider-程序员宅基地

文章浏览阅读131次。ContentProvider主要用于在不同的应用程序之间实现数据共享,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性,目前内容提供其实android实现跨进程共享数据的标准方式。ContentProvider的用法一般有两种,一种是使用ContentResolver来读取和操作应用程序中ContentProvider共享的数据,另一种就是创建自己的..._. android应用程序的contentprovider对象可以向其他应用程序提供数据,但不能

Linux网络配置之一二_2019.04.22:23_22:00-23:00_mage_linux_log_linux {00..23}-程序员宅基地

文章浏览阅读152次。Linux网络配置之一基础总线型网络:环型网络星型网络结构网桥交换机逻辑地址/物理地址(MAC)参考基础协议:Protocol10Mbps网络:10M(2^20)个bit每秒 #2^20bit/sMB:MByteMbps/8=MBEthernet:最早以太网是总线型网络总线型网络:MAC:Media Access Control某台主机的唯一标识叫MAC地址数据包包括:数据首部..._linux {00..23}

随便推点

error : xxxx:对‘xxxxxxxxx’未定义的引用_对 未定义的引用-程序员宅基地

文章浏览阅读5k次。在使用vs2019开发Linux过程中,出现这种编译错误,有很多情况,我这里列举三种:1、未包含头文件(跟开发windows一样);2、未包含库文件(这就跟windows端开发提示不一样了);3、包含的库文件顺序不对。本文我不对前两种进行说明,因为附加进去就行,这里说说第三种。由于我们长期在windows上开发,导致我们会有一种大脑引导误区,总会用同样的思维或者说方案来处理Linux..._对 未定义的引用

如何打印uint64_t的数据_stm32 打印64位数据-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏8次。stm32芯片使用SDK5.1编程时遇到需要将uint64_t数据以字符串形式显示出来的问题,经查阅,使用下述语句可以实现需求:sprintf(buf, "%llu",WebSource_Addr);//WebSource_Addr为uint64_t 类型,buf定义为char buf[20]注:stm32芯片为32位,使用%llu;64位的使用%lu就行如何打印uint64_t的数据..._stm32 打印64位数据

Java知识17 String类【多测师】-程序员宅基地

文章浏览阅读110次。一、创建字符串String greeting = “平安普惠”;可以使用关键字和构造方法来创建String对象String类有11种构造方法,这些方法提供不同的参数初始化字符串,比如提供一个字符数组参数public class StringDemo { public static void main(String args[]) { char[] helloArr..._java 17 string

C# MsChart学习笔记_#valy-程序员宅基地

文章浏览阅读337次。MSChart的Label的值的转义符,如下:  #VALX 显示当前图例的X轴的对应文本(或数据)  #VAL, #VALY, 显示当前图例的Y轴的对应文本(或数据)  #VALY2, #VALY3, 显示当前图例的辅助Y轴的对应文本(或数据)  #SER: 显示当前图例的名称  #LABEL 显示当前图例的标签文本  #INDEX 显示当前图例的索引  #PERCENT 显示当前..._#valy

一起学WF3.5【13】_3.5 vf:/ 协lwj32v9p54m7j8畏畏-程序员宅基地

文章浏览阅读740次。再看逻辑流活动的Replicator活动。它并不与for循环完全相同。它也有一个循环初始化事件,循环完成事件和一个循环继续事件。它提供了这些事件来指明重复性的子活动的创建工作,以便你能个性地进行数据绑定,子活动完成了它就触发一个事件,以便你能为每个子活动实例执行一些清理和管理的任务。Replicator活动只接受一个唯一的活动,它能作为其他活动的容器。它触发一个开始执行的初始化事件。在初始_3.5 vf:/ 协lwj32v9p54m7j8畏畏

git小乌龟版本回退_show reflog-程序员宅基地

文章浏览阅读9k次。git小乌龟版本回退1.文件位置右键>TortoiseGit>Show log2.选择需要回退到的版本3.右键选择“ Reset "masterto this ”,点击ok之后,本地版本已回退。4.如需要同步回退远程版本。可在文件位置右键选择Git Bush Here.输入git push -f。5.如果想要再回退到原来的新版本,那么右键项目,选择TortoiseGit&..._show reflog

推荐文章

热门文章

相关标签