Java中使用动态mybatis语句经典用法

OpenGL纹理贴图 OpenGL纹理1. 基本概念2. 纹理环绕方式3. 纹理过滤3.1 GL_NEAREST3.2 GL_LINEAR3.3 多级渐远纹理 (Mipmap)4. 纹理加载与创建4.1 纹理加载4.2 纹理创建4.3 纹理的使用 1. 基本概念 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来表示物体的细节特征,希望绘制一个有足够多细节的物体,当然可以用足够多的顶点颜色来描述,但是无疑也增加了许多额外的开销;另一种办法就是使用纹理。 学习之前先展示一张实现的纹理图以更好理解纹理! 还是这张图为了将纹 阅读详情

在Java中使用动态mybatis语句访问DB的例子如下,官方建议不用XML.

package com.test.econtract.esign2bcore.dao;

import com.test.econtract.esign2bcore.dao.model.PlatformInfoDO;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface PlatformInfoMapper {

   @Insert(value = {
           "<script> ",
           "INSERT INTO platform_info ",
           "<trim prefix='(' suffix=')' suffixOverrides=','> ",
           "<if test='platName!=null'>plat_name,</if> ",
           "<if test='appId!=null'>app_id,</if> ",
           "<if test='appSecrect!=null'>app_secrect,</if> ",
           "<if test='signFrom!=null'>sign_from,</if> ",
           "<if test='description!=null'>description,</if> ",
           "<if test='deletedAt!=null'>deleted_at,</if> ",
           "</trim> ",
           "VALUES ",
           "<trim prefix='(' suffix=')' suffixOverrides=','> ", 
           "<if test='platName!=null'>#{platName},</if> ",
           "<if test='appId!=null'>#{appId},</if> ",
           "<if test='appSecrect!=null'>#{appSecrect},</if> ",
           "<if test='signFrom!=null'>#{signFrom},</if> ",
           "<if test='description!=null'>#{description},</if> ",
           "<if test='deletedAt!=null'>#{deletedAt},</if> ",
           "</trim> ",
           "</script> ",
   })
   @Options(useGeneratedKeys = true, keyColumn = "id")
   Integer insert(PlatformInfoDO insert);

   @Update(value = {
           "<script> ",
           "UPDATE platform_info",
           "<set> ",
           "<if test='id!=null'>id = #{id},</if> ",
           "<if test='platName!=null'>plat_name = #{platName},</if> ",
           "<if test='appId!=null'>app_id = #{appId},</if> ",
           "<if test='appSecrect!=null'>app_secrect = #{appSecrect},</if> ",
           "<if test='signFrom!=null'>sign_from = #{signFrom},</if> ",
           "<if test='description!=null'>description = #{description},</if> ",
           "<if test='deletedAt!=null'>deleted_at = #{deletedAt},</if> ",
           "</set> ",
           "WHERE id = #{id} ",
           "</script>", 
   })
   Integer update(PlatformInfoDO update);

   @Select(value = {
           "<script> ",
           "SELECT * FROM platform_info",
           "<where> ",
           "<if test='id!=null'>AND id = #{id}</if> ",
           "<if test='platName!=null'>AND plat_name = #{platName}</if> ",
           "<if test='appId!=null'>AND app_id = #{appId}</if> ",
           "<if test='appSecrect!=null'>AND app_secrect = #{appSecrect}</if> ",
           "<if test='signFrom!=null'>AND sign_from = #{signFrom}</if> ",
           "<if test='description!=null'>AND description = #{description}</if> ",
           "<if test='deletedAt!=null'>AND deleted_at = #{deletedAt}</if> ",
           "</where> ",
           "LIMIT 0,1 ",
           "</script>", 
   })
   PlatformInfoDO selectOne(PlatformInfoDO query);

   @Select({"SELECT * FROM platform_info WHERE id = #{id} AND deleted_at = 0"})
   PlatformInfoDO selectOneById(Integer id);

   @Select(value = {
           "<script> ",
           "SELECT * FROM platform_info",
           "<where> ",
           "<if test='id!=null'>AND id = #{id}</if> ",
           "<if test='platName!=null'>AND plat_name = #{platName}</if> ",
           "<if test='appId!=null'>AND app_id = #{appId}</if> ",
           "<if test='appSecrect!=null'>AND app_secrect = #{appSecrect}</if> ",
           "<if test='signFrom!=null'>AND sign_from = #{signFrom}</if> ",
           "<if test='description!=null'>AND description = #{description}</if> ",
           "<if test='deletedAt!=null'>AND deleted_at = #{deletedAt}</if> ",
           "</where> ",
           "</script>", 
   })
   List<PlatformInfoDO> selectMany(PlatformInfoDO query);

   @Delete(value = {
           "<script> ",
           "DELETE FROM platform_info",
           "<where> ",
           "<if test='id!=null'>AND id = #{id}</if> ",
           "<if test='platName!=null'>AND plat_name = #{platName}</if> ",
           "<if test='appId!=null'>AND app_id = #{appId}</if> ",
           "<if test='appSecrect!=null'>AND app_secrect = #{appSecrect}</if> ",
           "<if test='signFrom!=null'>AND sign_from = #{signFrom}</if> ",
           "<if test='description!=null'>AND description = #{description}</if> ",
           "<if test='deletedAt!=null'>AND deleted_at = #{deletedAt}</if> ",
           "</where> ",
           "</script>", 
   })
   Integer delete(PlatformInfoDO delete);


@Select(value = {
           "<script> ",
           "SELECT * FROM live_verify ",
           "WHERE deleted_at = 0 ",
           "<if test='liveVerify.id!=null'>AND id = #{liveVerify.id}</if> ",
           "<if test='liveVerify.fkId!=null'>AND fk_id = #{liveVerify.fkId}</if> ",
           "<if test='liveVerify.subFkId!=null'>AND sub_fk_id = #{liveVerify.subFkId}</if> ",
           "<if test='liveVerify.systemType!=null'>AND system_type = #{liveVerify.systemType}</if> ",
           "<if test='liveVerify.username!=null'>AND username = #{liveVerify.username}</if> ",
           "<if test='liveVerify.idNoType!=null'>AND idNo_type = #{liveVerify.idNoType}</if> ",
           "<if test='liveVerify.idNoEncrypt!=null'>AND idNo_encrypt = #{liveVerify.idNoEncrypt}</if> ",
           "<if test='liveVerify.orderNo!=null'>AND order_no = #{liveVerify.orderNo}</if> ",
           "<if test='liveVerify.verifyStatus!=null'>AND verify_status = #{liveVerify.verifyStatus}</if> ",
           "<if test='liveVerify.verifyFrom!=null'>AND verify_from = #{liveVerify.verifyFrom}</if> ",
           "<if test='liveVerify.verifyImage!=null'>AND verify_image = #{liveVerify.verifyImage}</if> ",
           "AND verify_status IN ",
           "<foreach collection='statusList' item='item' open='(' close=')' separator=',' > ",
           "#{item} ",
           "</foreach> ",
           "ORDER BY ID DESC LIMIT 0,1 ",
           "</script> "
   })
   LiveVerifyDO selectLiveVerifyByMultiResult(@Param("liveVerify") LiveVerifyDO liveVerifyDO, @Param("statusList") List<Integer> list);
   
}

 "<foreach collection='dataRecordList' open='(' close=')' separator=',' index='index' item='item' >",
基于车辆运动学的规划算法 - Hybrid A*/ State Lattice Planning (前置知识:自行车模型、Dubins、Reeds Shepp、多项式曲线、螺旋曲线) 本文将按顺序讲解基于车辆运动学的规划算法,以及需要的前置知识:自行车模型、Dubins和Reeds Shepp曲线、多项式曲线和螺旋曲线 阅读详情

相关推荐

1.用Python写了一个进销存管理的软件~需求分析&界面设计&数据库设计&技术路线选择~

前端也打算用Python来写,查了很多的python库,大家比较推荐的是wxpython和QPython,之前接触过一点点的QT,确实非常强大,但是库比较重量级,自己写的这个东西明显配不上QT,又详细调研了一下wxpython,就是它了!

pepper_lihui的专栏 4321

MyBatis 中 #{} 和 ${} 的区别

1、在MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{}占位符 (2)${}拼接符 2、#{}和${}的区别 (1) 1)#{}为参数占位符?,即sql 预编译 2)${}为字符串替换,即sql 拼接 (2) 1)#{}:动态解析 ->预编译-> 执行 2)${}:动态解析 ->编译-> 执行 (3) 1)#{}的变量替换是在DBMS中 2)${}的变量替换是在DBMS外 (4) 1)变量替换后,...

liuyuinsdu的专栏 1540

KDD 2025 | 人大团队提出多任务贝叶斯联邦学习算法,同时处理分类和回归

©PaperWeekly 原创 ·作者 |吕俊良单位 |中国人民大学统计学院本文介绍了中国人民大学统计学院的一篇关于多任务贝叶斯联邦学习的文章“Task Diversity in Bayesian Federated Learning: Simultaneous Processing of Classification and Regression”,本文被 KDD 2025 接收,代码已经...

Paper weekly 2746

JAVA动态代理对Mybatis的个人理解

动态代理看这篇文章很详细:https://www.cnblogs.com/gonjan-blog/p/6685611.html 上述是正常动态代理的思路 来看看Mybatis的源码 简单调用一下mybatis SqlSession sqlSession = factory.openSession(); //我们来分析sqlSession.getMapper(UserMapper.class); UserMapper mapper = sqlSession.getMapper(UserMapper.class

weixin_42026631的博客 261

快手did did_gt edid的注册过程

接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android did 是本地生成的16进制 或者 获取的 android_id did_gt 是did生成时间戳 1595073601970 public static final Random f16237a = new Random(System.currentTimeMillis()); public static long m19668a() {  &n

HURUWO的技术博客 1万+

四旋翼黑科技揭秘:如何利用PX4隐藏的角加速度数据提升控制性能

本文深入探讨了如何利用PX4飞控中隐藏的角加速度数据,结合增量非线性动态逆(INDI)控制方法,显著提升四旋翼无人机的控制性能。通过实战教程,指导开发者从数据订阅、INDI原理到代码实现,构建响应更快、鲁棒性更强的控制回路,有效应对突风与快速机动。

lake5的博客 719

Mybatis动态传入database

方法一:使用动态url mybatis-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties> <pr

稻草人技术博客 749

手把手教你用Trae配置Python开发环境(含Claude 3.5代码生成实战)

本文详细介绍了如何使用字节跳动推出的Trae智能开发环境配置Python开发环境,并实战演示了Claude 3.5代码生成功能。从环境准备到项目初始化,再到AI辅助编码和调试优化,全面展示了Trae在提升开发效率方面的强大能力,特别适合Python开发者快速搭建项目和解决复杂问题。

weixin_28309571的博客 976

Spring Boot+MyBatis使用原生SQL,执行动态自定义SQL语句

因为项目中需要做一些操作,比如动态在数据库中创建表,动态给数据库添加字段等等;当时网上找了很多资料没看懂,后来看了一篇文章总算来了灵感,但没保存链接,所以一时没法贴出来。毕竟自己在做的过程中遇到了很多坎坷,所以就自己整理一下了。----------------------------------   割背景   -------------------------------------------...

益添的博客 3万+

从零到一:手把手教你构建自定义ReaxFF力场参数

本文手把手教你从零构建自定义ReaxFF力场参数,详解反应力场的动态键序机制与参数化逻辑。通过LAMMPS实战演示,涵盖训练数据准备、参数优化算法选择及性能优化技巧,助力研究人员精准模拟化学反应过程。适用于材料科学、催化研究等领域,特别适合已掌握分子动力学基础的进阶用户提升力场开发能力。

weixin_28365523的博客 1056

芒果YOLO11改进176:2025最新顶会论文|尺度动态损失函数Scale-based Dynamic Loss,即插即用|以减少标签不准确对损失函数稳定性的影响

芒果YOLO11改进186:2025最新顶会论文|尺度动态损失函数Scale-based Dynamic Loss,即插即用|以减少标签不准确对损失函数稳定性的影响

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2131

Java之Mybatis:动态SQL

动态SQL介绍if元素trim标签choose标签二级目录三级目录 介绍 官方文档中这样写到:     动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 需要学习的元素: if元素 当我们查询员工时,完整得sql语句是这样的: select * from

陈煜杰 455

2026年03月CCF-GESP编程能力等级认证C++编程一级真题解析

本文收录于专栏《。订阅后可阅读专栏内所有文章。

人生就是一个不断学习的过程 337

MyBatis动态sql语句使用

一、MyBatis动态语句分为4种元素: 元素 作用 描述 if 条件判断 单条件判断 choose(when、otherwise) 条件选择,相当Java when 多条件分支判断 where、set 辅助 处理sql语句拼接问题 foreache 循环 循环 二、Mybatis动态sql语句使用方式、例子 ...

我走小路的博客 7313

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mybatis动态生成sql语句

在Java代码中,我们通过来调用Mapper文件中定义的deleteById删除方法,并传递id = 59。MyBatis会将59替换到的SQL语句中,生成最终的SQL语句并执行,最终删除t_car表中id为59的记录。

gege_0606的博客 2179

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mybatis动态SQL语句

三、动态SQL语句<br />        有些时候,sql语句where条件中,需要一些安全判断,例如按性别检索,如果传入的参数是空的,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。这是我们可以使用动态sql,增加一个判断,当参数不符合要求的时候,我们可以不去判断此查询条件。<br />        下文均采用mysql语法和函数(例如字符串链接函数CONCAT)。<br />        源代码http://limingnihao.javaeye.com/admin/bl

ask_rent的专栏 5万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Mybatis动态SQL语句大全

Mybatis动态SQL语句大全

小学生波波 2642

Mybatis动态 sql用法

在sql语句中加入标签,按照之前sqlmap中的动态sql的样式书写。将 SQL 语句类和 Mapper 接口类关联,利用方法中的 type 属性和 method 属性;解决 Java 代码中嵌入 SQL 语句,通过简单地创建一个实例来调用方法生成SQL语句。在接口中定义内部类,来构建需要的动态sql语句,比使用标签的方式结构更加清晰。开始或插入到 SELECT 子句,可以被多次调用,参数也会添加到 SELECT子句。编写测试类,测试动态生成的SQL 语句是否准确。...

weixin_49336701的博客 3882

Mybatis 系列(2)—— 动态语句 及 Mybatis generator 的使用

Mybatis最强大的特性之一是她的动态语句功能。如果你之前经常写原生的sql,你就会和小编一样明白把sql语句条件连接在一起是多么的痛苦,一点都不能马虎。Mybatis的动态语句就为我们解决了这个问题。Mybatis可以通过映射的sql语句使用强大的动态sql来解决很多问题。就像下面这样的sql,小编在过去的一个月里,每天都在重复着这样的拼写工作。。

周洲 (Julie) 5480

mybatis 动态语句

目录 基础 if 语句 if语句判断 数字类型 字符串 if+where语句 if+set 语句 choose(when,otherwise) 语句 trim 语句 SQL 片段 foreach 语句 基础 MyBatis的动态SQL语句是基于OGNL表达式的。可以方便的在SQL语句中实现某些逻辑,总体说来MyBatis动态SQL语句主要有以下几类: 1、if语句(简...

今天吃了吗的博客 2227

Mybatis 动态 SQL 语句大全

动态 SQL 语句大全

北执南念的博客 4692

Java经典框架之MyBatis

缓存的物理介质通常是内存,而永久性数据存储源的物理介质通常是硬盘或磁盘,应用程序读写内在的速度显然比读写硬盘的速度快,如果缓存中存放的数据量非常大,也会用硬盘作为缓存的物理介质。MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。在默认的一对一和一对多中,一条SQL就能够查询到所有数据,但是,有的数据有时候一时半会用不上,例如查询员工,捎带获取员工的部门数据,但是部门数据使用的频率很低,这种时候可以使用延迟查询,首先获取到所有的员工数据,然后在需要的时候再去获取部门数据。

m0_52514893的博客 2376

mybatis的mapper.xml动态SQL语句用法

用于实现动态SQL的元素主要有 if 用于判断 示例 <update id="upda" parameterType="User"> update smbms_user <set> <!--修改时可以判断userCode是否是空的如果不为空就把数据库中这一列的值更改掉 如果为空就不修改这一列数据库这一列的值也不会为Null--> &...

weixin_48039329的博客 2772

mybatis动态sql语句

mybatis动态sql MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 if语句 动态 SQL 通常要做的事情是根据条件包含 where 子句的一部分。比如: <?x...

swop_的博客 321

MyBatis第四部分 MyBatis动态语句

经常遇到很多按照很多查询条件进行查询的情况,比如智联招聘的职位搜索等内容不是固定的。其中经常出现很多条件不取值的情况,在后台应该如何完成最终的SQL语句即动态SQL?select * from job where location=北京 and type =XX salary=xxxXXX中where中的内容应该都是动态添加的,是不确定的,之前是使用jdbc操作数据库,采用的方式是字符串拼接每有一个条件值就添加一个条件。

2202_75422552的博客 1023

Mybatis中动态SQL语句

类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。而使用if标签时,只要test中的表达式为true,就会执行if标签中的条件。foreach元素是非常强大的,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。参数含义:index为数组的下标,item为数组每个元素的名称,名称随意,open循环开始,close循环结束,separator中间分隔输出。

weixin_47276069的博客 1519
上一篇: mybatis动态script加入 >=号
下一篇: java8 stream, map, Option 等函数式编程的使用例子
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值