技术标签: Java
动态SQL是MyBatis最核心的功能和最强大的特性之一,在使用原生JDBC进行连接数据库时,若要完成SQL语句拼接,程序员需要小心翼翼地完成代码,非常不方便,而MyBatis基于OGNL表达式的动态SQL机制,对SQL语句进行灵活操作,通过表达式进行判断,对SQL进行灵活拼接、组装。
总体说来mybatis 动态SQL 语句主要有以下几类:
其中前三个是最常用的,本文也主要介绍这三种语句。
在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>
即完成了空字符串校验
可用来简化上文程序中的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
文章浏览阅读9.4k次,点赞3次,收藏10次。在 MySQL 中,可以使用CREATE DATABASE语句创建数据库,语法格式如下:CREATE DATABASE [IF NOT EXISTS] <数据库名>[[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];[ ]中的内容是可选的。语法说明如下:&l..._mysql create database collate
文章浏览阅读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
文章浏览阅读7.1k次。最近,很多读者在找阿里云盘的福利码,小编也不例外!这不,发现了大宝藏。每天可以领取阿里云云盘1.5T容量!让我们来看看:公测期间,阿里云盘有一个利用福利码兑换云盘空间的活动。下面来说一下如何利用福利码兑换空间:进入网盘App,点击头像,找到【福利社】,点击右上角的【兑换福利码】,输入福利码,即可兑换空间。每个福利码少则200G,多达500G,福利码不同,兑换的空间也不同,每天可以免费兑换三次,当然,仅限活动期间兑换,快来领取吧!活动地址:https://mp.weixin.qq.com/s/_阿里云盘每天免费领取1.5t容量
文章浏览阅读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
文章浏览阅读131次。ContentProvider主要用于在不同的应用程序之间实现数据共享,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性,目前内容提供其实android实现跨进程共享数据的标准方式。ContentProvider的用法一般有两种,一种是使用ContentResolver来读取和操作应用程序中ContentProvider共享的数据,另一种就是创建自己的..._. android应用程序的contentprovider对象可以向其他应用程序提供数据,但不能
文章浏览阅读152次。Linux网络配置之一基础总线型网络:环型网络星型网络结构网桥交换机逻辑地址/物理地址(MAC)参考基础协议:Protocol10Mbps网络:10M(2^20)个bit每秒 #2^20bit/sMB:MByteMbps/8=MBEthernet:最早以太网是总线型网络总线型网络:MAC:Media Access Control某台主机的唯一标识叫MAC地址数据包包括:数据首部..._linux {00..23}
文章浏览阅读5k次。在使用vs2019开发Linux过程中,出现这种编译错误,有很多情况,我这里列举三种:1、未包含头文件(跟开发windows一样);2、未包含库文件(这就跟windows端开发提示不一样了);3、包含的库文件顺序不对。本文我不对前两种进行说明,因为附加进去就行,这里说说第三种。由于我们长期在windows上开发,导致我们会有一种大脑引导误区,总会用同样的思维或者说方案来处理Linux..._对 未定义的引用
文章浏览阅读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位数据
文章浏览阅读110次。一、创建字符串String greeting = “平安普惠”;可以使用关键字和构造方法来创建String对象String类有11种构造方法,这些方法提供不同的参数初始化字符串,比如提供一个字符数组参数public class StringDemo { public static void main(String args[]) { char[] helloArr..._java 17 string
文章浏览阅读337次。MSChart的Label的值的转义符,如下: #VALX 显示当前图例的X轴的对应文本(或数据) #VAL, #VALY, 显示当前图例的Y轴的对应文本(或数据) #VALY2, #VALY3, 显示当前图例的辅助Y轴的对应文本(或数据) #SER: 显示当前图例的名称 #LABEL 显示当前图例的标签文本 #INDEX 显示当前图例的索引 #PERCENT 显示当前..._#valy
文章浏览阅读740次。再看逻辑流活动的Replicator活动。它并不与for循环完全相同。它也有一个循环初始化事件,循环完成事件和一个循环继续事件。它提供了这些事件来指明重复性的子活动的创建工作,以便你能个性地进行数据绑定,子活动完成了它就触发一个事件,以便你能为每个子活动实例执行一些清理和管理的任务。Replicator活动只接受一个唯一的活动,它能作为其他活动的容器。它触发一个开始执行的初始化事件。在初始_3.5 vf:/ 协lwj32v9p54m7j8畏畏
文章浏览阅读9k次。git小乌龟版本回退1.文件位置右键>TortoiseGit>Show log2.选择需要回退到的版本3.右键选择“ Reset "masterto this ”,点击ok之后,本地版本已回退。4.如需要同步回退远程版本。可在文件位置右键选择Git Bush Here.输入git push -f。5.如果想要再回退到原来的新版本,那么右键项目,选择TortoiseGit&..._show reflog