|
1、动态SQL片段
通过SQL片段达到代码复用
<!-- 动态条件分页查询 -->
<sql id="sql_count"> select count(*) </sql> <sql id="sql_select"> select * </sql> <sql id="sql_where"> from icp <dynamic prepend="where"> <isNotEmpty prepend="and" property="name"> name like '%$name$%' </isNotEmpty> <isNotEmpty prepend="and" property="path"> path like '%path$%' </isNotEmpty> <isNotEmpty prepend="and" property="area_id"> area_id = #area_id# </isNotEmpty> <isNotEmpty prepend="and" property="hided"> hided = #hided# </isNotEmpty> </dynamic> <dynamic prepend=""> <isNotNull property="_start"> <isNotNull property="_size"> limit #_start#, #_size# </isNotNull> </isNotNull> </dynamic> </sql> <select id="findByParamsForCount" parameterClass="map" resultClass="int"> <include refid="sql_count"/> <include refid="sql_where"/> </select> <select id="findByParams" parameterClass="map" resultMap="icp.result_base"> <include refid="sql_select"/> <include refid="sql_where"/> </select>
2、数字范围查询
所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段
<isNotEmpty prepend="and" property="_img_size_ge">
<![CDATA[ img_size >= #_img_size_ge# ]]> </isNotEmpty> <isNotEmpty prepend="and" property="_img_size_lt"> <![CDATA[ img_size < #_img_size_lt# ]]> </isNotEmpty>
多次使用一个参数也是允许的
<isNotEmpty prepend="and" property="_now">
<![CDATA[ execplantime >= #_now# ]]> </isNotEmpty> <isNotEmpty prepend="and" property="_now"> <![CDATA[ closeplantime <= #_now# ]]> </isNotEmpty>
3、时间范围查询
<isNotEmpty prepend="" property="_starttime">
<isNotEmpty prepend="and" property="_endtime"> <![CDATA[ createtime >= #_starttime# and createtime < #_endtime# ]]> </isNotEmpty> </isNotEmpty>
4、in查询
<isNotEmpty prepend="and" property="_in_state">
state in ('$_in_state$') </isNotEmpty>
5、like查询
<isNotEmpty prepend="and" property="chnameone">
(chnameone like '%$chnameone$%' or spellinitial like '%$chnameone$%') </isNotEmpty> <isNotEmpty prepend="and" property="chnametwo"> chnametwo like '%$chnametwo$%' </isNotEmpty>
6、or条件
<isEqual prepend="and" property="_exeable" compareValue="N">
<![CDATA[ (t.finished='11' or t.failure=3) ]]> </isEqual>
<isEqual prepend="and" property="_exeable" compareValue="Y">
<![CDATA[ t.finished in ('10','19') and t.failure<3 ]]> </isEqual>
7、where子查询
<isNotEmpty prepend="" property="exprogramcode">
<isNotEmpty prepend="" property="isRational"> <isEqual prepend="and" property="isRational" compareValue="N"> code not in (select t.contentcode from cms_ccm_programcontent t where t.contenttype='MZNRLX_MA' and t.programcode = #exprogramcode#) </isEqual> </isNotEmpty> </isNotEmpty>
<select id="findByProgramcode" parameterClass="string" resultMap="cms_ccm_material.result">
select * from cms_ccm_material where code in (select t.contentcode from cms_ccm_programcontent t where t.contenttype = 'MZNRLX_MA' and programcode = #value#) order by updatetime desc </select> 9、函数的使用
<!-- 添加 -->
<insert id="insert" parameterClass="RuleMaster"> insert into rulemaster( name, createtime, updatetime, remark ) values ( #name#, now(), now(), #remark# ) <selectKey keyProperty="id" resultClass="long"> select LAST_INSERT_ID() </selectKey> </insert> <!-- 更新 --> <update id="update" parameterClass="RuleMaster"> update rulemaster set name = #name#, updatetime = now(), remark = #remark# where id = #id# </update> 10、map结果集
<!-- 动态条件分页查询 -->
<sql id="sql_count"> select count(a.*) </sql> <sql id="sql_select"> select a.id vid, a.img imgurl, a.img_s imgfile, b.vfilename vfilename, b.name name, c.id sid, c.url url, c.filename filename, c.status status </sql> <sql id="sql_where"> From secfiles c, juji b, videoinfo a where a.id = b. videoid and b.id = c.segmentid and c.status = 0 order by a.id asc,b.id asc,c.sortnum asc <dynamic prepend=""> <isNotNull property="_start"> <isNotNull property="_size"> limit #_start#, #_size# </isNotNull> </isNotNull> </dynamic> </sql> <!-- 返回没有下载的记录总数 --> <select id="getUndownFilesForCount" parameterClass="map" resultClass="int"> <include refid="sql_count"/> <include refid="sql_where"/> </select> <!-- 返回没有下载的记录 --> <select id="getUndownFiles" parameterClass="map" resultClass="java.util.HashMap"> <include refid="sql_select"/> <include refid="sql_where"/> </select>
11、trim
Xml代码
Xml代码
12、choose (when, otherwise)
Xml代码 |
相关推荐
在 Linux 虚拟机中手动安装 VMware Tools
对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。 前提条件 有关 open-vm-tools 的操作系统兼容性的详细信息,请参见《VMware 兼容性指南》,网址为VMware Compatibility Guide - System Search。 开启虚拟机。 确认客户机操作系统正在运行。 因为 VMware Tools 安装程序是使用 Perl 编写的,请确认已在客户机操作系统中安..
mybatis遇到的坑及总结
mybatis遇到的坑及总结resultType和resultMap#{} 以及 ${}区别 resultType和resultMap 一般如果项目运行报Could not find result map java.util.Map 的话就是错误的把 <select id="queryXXX" resultMap="java.util.Map" > 写成了 <select id...
Pointnet++环境配置+复现
深度学习点云经典网络Pointnet++
mybatis 动态标签
delete from ${dmlItem.tableName} test="dmlItem.id != null"> where ${dmlItem.pkColumn} = #{dmlItem.id} where 1 = 1
强化学习_06_pytorch-TD3实践(BipedalWalkerHardcore-v3)
DDPG的critic会高估, 从而导致actor策略失败。TD3是增加了三个关键技巧优化DDPG。经过优化后的TD3(Twin Dalayed DDPG 双延迟深度确定性策略梯度算法)适合于具有高维连续动作空间的任务。
Linux内核同步原语之队列自旋锁(Queued Spin Lock)深度解析
本文深度解析了Linux内核中的队列自旋锁(Queued Spin Lock)机制。通过对比传统自旋锁的瓶颈,详细阐述了队列自旋锁如何利用紧凑的4字节结构、每CPU节点数组和pending位优化,有效解决多核(SMP)系统中的缓存行乒乓和惊群效应,实现公平、高效的锁等待队列,从而显著提升内核在高并发场景下的可扩展性与性能。
ibatis的dynamicSQL中,关于prepend的使用
ibatis的文档中,关于动态SQL的举例如下: [code="java"] select * from ACCOUNT ACC_ID = #id# ACC_LAST_NAME = #lastName# order by ACC_LAST_NAME [/code] 当需要使用根据传...
DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)
本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。
Mybatis使用IN语句查询
一、Mybatis使用IN语句查询 写法一: 在SQL语法中如果我们想使用in的话直接可以像如下一样使用: select * from ec_org_person where state in ('1','2', '3' ) 但是如果在MyBatis中的使用in的话 <select id="findPersonByLogNameAndEntity" paramete...
基于TENG的呼吸测量与识别系统:从蓝牙到WiFi的改造与上位机实现
本文介绍了一种基于摩擦纳米发电机(TENG)的呼吸测量系统改造方案,将原有蓝牙通信升级为WiFi传输。系统通过TENG传感器采集呼吸信号,STM32微控制器处理数据后,经ESP8266 WiFi模块发送至上位机。文中详细阐述了硬件改造(四通道改单通道、蓝牙换WiFi)、嵌入式软件修改(包括ESP8266驱动、数据采集与TCP通信实现)以及上位机软件设计。改造后的系统提升了传输距离和稳定性,为可穿戴健康监测提供了更优解决方案。
IP-guard发布新版本4.87.2241.0
IP-guard发布了新版本4.87.2241.0,用户可通过提供的下载地址获取完整安装包和升级包。下载后,用户需联系厂家申请测试序列号以进行安装和使用。IP-guard是一款专注于企业文件加密、文档加密系统、防泄密软件、数据安全的软件。
MyBatis(三)
一、Mybatis-SQL(动态SQL) 1.if 根据判断条件决定是否启用标签中的sql语句 select id,`name`,sex,email from customer where 1 = 1 <if test="name != null"> and `name` like concat("%",#{name},"%")
【AI编程】Trae 环境搭建与配置从使用到项目实战详解
Trae 环境搭建与配置从使用到项目实战详解
(十三)Mybatis动态SQL各种标签的用法详解
这篇文章主要讲述Mybatis动态SQL各种标签的用法详解,学习Mybatis动态sql看这一篇博客足够了。 目录什么是静态SQL?什么是动态SQL?动态SQL标签详解IF标签的用法where标签的用法trim标签的用法when和otherwise的用法set标签的用法foreach标签的用法bind标签的用法sql标签的用法 什么是静态SQL? 如果嵌入了SQL语句,而这个SQL语句的主体结构已经明确,例如在Java的一段代码中有一个待执行的SQL“select * from t1 where c1>
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
MyBatis动态SQL标签的用法
1.MyBatis动态SQL MyBatis 的强大特性之一便是它的动态 SQL,即拼接SQL字符串。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中。 动态 SQL 元素和使用 JST
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
MyBatis系列(六):MyBatis动态Sql之if标签的用法
假设有这样1个需求:根据用户的输入条件来查询用户列表,如果输入了用户名,就根据用户名模糊查询,如果输入了邮箱,就根据邮箱精确查询,如果同时输入了用户名和邮箱,就用这两个条件去匹配用户。假设有这样1个需求:往数据库表中插入数据的时候,如果某一列的参数值不为空,就使用传入的值,如果传入的参数值为空,就使用数据库中的默认值(通常是空),而不使用传入的空值。4)当有多个判断条件时,使用and或or进行连接,嵌套的判断可以使用小括号分组,and相当于Java中的与(&&),or相关于Java中的或(||)。
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
MyBatis 动态 SQL 常用标签用法合集,建议收藏!
满满的实用干活!!!搞起搞起
MyBatis系列(七):MyBatis动态Sql之choose,where,set标签的用法
本篇博客主要讲解如何使用choose,where,set标签生成动态的Sql。
MyBatis系列(八):MyBatis动态Sql之foreach标签的用法
上面的例子中只有一个集合参数,我们把collection属性的值设置为了list,其实也可以写成collection,为什么呢?假设有这样1个需求:根据传入的用户id集合查询出所有符合条件的用户,此时我们需要使用到Sql中的IN,如 id in (1,1001)。如果参数是一个数组参数,collection可以设置为默认值array,看了上面的源码,应该不难理解。
深入浅出MyBatis【7】MyBatis动态Sql之choose,where,set标签的用法
本篇博客主要讲解如何使用choose,where,set标签生成动态的Sql。
java动态标签_MyBatis动态SQL标签用法实例详解
本文通过实例代码给大家介绍了MyBatis动态SQL标签用法,非常不错,具有参考借鉴价值,需要的朋友参考下吧1、动态SQL片段通过SQL片段达到代码复用select count(*)select *from icpname like '%$name$%'path like '%path$%'area_id = #area_id#hided = #hided#limit #_start#, #_si...
MyBatis动态SQL标签总结、开发手册、高阶用法(动态SQL、OGNL、批量操作、片段重用、 SQL 组合、 执行优化、嵌套查询与延迟加载)
MyBatis动态SQL标签总结、开发手册、高阶用法(动态SQL、OGNL、批量操作、片段重用、 SQL 组合、 执行优化、嵌套查询与延迟加载)
mybatis中动态sql标签的用法
本章节主要介绍mybatis的动态sql的作用和用法 一、mybatis动态SQL概述 MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL...
MyBatis —— 动态SQL之标签用法
目录 1、if 标签 2、choose 标签 3、where 标签 4、set 标签 5、trim 标签 6、foreach 标签 1、if 标签 <if test="OGNL表达式"> ... </if> 用法比较简单,不做讲解。 2、choose 标签 可以实现 if 。。。else、if。。。else。。。的逻辑,用到了 c...
Mybatis动态Sql 关于if,where,choose,when,otherwise,set,sql,foreach标签+List结合的用法
动态SQL建表Pojo类映射器接口1. where+if 的用法2. choose+when+otherwise的用法3. set+sql4. foreach 可以根据参数不同,生成的不同sql语句 标签:if,where,choose,when,otherwise,set,sql,foreach 建表 CREATE TABLE `blog` ( `id` VARCHAR(50) NOT NULL COMMENT '博客id', `title` VARCHAR(100) NOT NULL COMMEN
Mybatis动态SQL中—where标签与if标签的条件判断用法
用<where>和<if> 进行组合,对<if>条件进行判断,一旦条件不成立时,<where> 标签会把对应的and关键字去掉(还有or关键字),if条件后的内容and不会存在,因此就不会对整个sql语句产生影响。
1757



被折叠的 条评论
为什么被折叠?



