mybatis-sql实战总结

mybatis-sql实战总结

  • 动态条件查询
  • 怎么List遍历集合进行拼接?

动态条件查询

动态条件查询总结
注意点:
1.可以用where 1=1 也可以用 防止出现后面没有条件的情况
2.模糊查询用concat拼接
A.SSTRING10 like concat(#{adAccEntrie.sstring10},‘%’)
3. 对于前端传来的日期参数,使用STR_TO_DATE来转为统一的格式
STR_TO_DATE( #{adAccEntrie.date01}, ‘%Y-%m-%d’)

4.对于String类型的字段,不但要判断是不是null,还要判断是不是空字符串””.
对于集合类型的字段,如List,不但要判断是不是null,还需要判断是不是空的集合,用size判断就行。
对于Date类型的字段,只需要判断是不是null就行了。

//String类型怎么判断拼接
<if test="adAccEntrie.sstring08 != null and adAccEntrie.sstring08 != ''">AND A.SSTRING08 = #{adAccEntrie.sstring08}<!--来源系统-->
</if>
//集合类型字段判断怎么拼接                   
<if test="ids != null and ids.size() > 0">AND ID IN<foreach collection="ids" item="id" open="(" close=")" separator=",">#{id}</foreach>
</if>
//Date类型字段判断怎么拼接
<if test="adAccEntrie.date01 != null and adAccEntrie.date02  != null">AND A.DATE01 BETWEEN STR_TO_DATE( #{adAccEntrie.date01}, '%Y-%m-%d') AND STR_TO_DATE( #{adAccEntrie.date02}, '%Y-%m-%d' )<!--记账日期--></if>

5.如果只查一个表 select *就足够了,但是如果有多个表select A.*就能查出指定表的所有字段了。

<!--    账户明细查询--><select id="getAccEntrieListByParam" resultMap="AdAccEntrieMap">SELECT A.*FROM Ad_Acc_Entrie A<where><if test="adAccEntrie.sstring08 != null and adAccEntrie.sstring08 != ''">AND A.SSTRING08 = #{adAccEntrie.sstring08}<!--来源系统--></if><if test="adAccEntrie.date01 != null and adAccEntrie.date02  != null">AND A.DATE01 BETWEEN STR_TO_DATE( #{adAccEntrie.date01}, '%Y-%m-%d') AND STR_TO_DATE( #{adAccEntrie.date02}, '%Y-%m-%d' )<!--记账日期--></if><if test="adAccEntrie.sstring01 != null and adAccEntrie.sstring01 != ''">AND A.SSTRING01 = #{adAccEntrie.sstring01}<!--借贷标识--></if><if test="adAccEntrie.mstring11 != null and adAccEntrie.mstring11 != ''">AND A.MSTRING11 = #{adAccEntrie.mstring11}<!--管理机构--></if><if test="adAccEntrie.sstring10 != null and adAccEntrie.sstring10 !=''">AND A.SSTRING10 like concat(#{adAccEntrie.sstring10},'%')<!--业务项目类型--></if><if test="adAccEntrie.lstring01 != null and adAccEntrie.lstring01 !=''">AND A.LSTRING01 like concat(#{adAccEntrie.lstring01},'%')<!--凭证类别--></if><if test="adAccEntrie.mstring07 != null and adAccEntrie.mstring07 != ''">AND A.MSTRING07 = #{adAccEntrie.mstring07}<!--业务号码--></if><if test="adAccEntrie.sstring17 != null and adAccEntrie.sstring17 != ''">AND A.SSTRING17 = #{adAccEntrie.sstring17}<!--业务场景编码--></if><if test="adAccEntrie.mstring02 != null and adAccEntrie.mstring02 != ''">AND A.MSTRING02 = #{adAccEntrie.mstring02}<!--科目代码--></if></where>limit #{ph.page},#{ph.rows}</select>

怎么List遍历集合进行拼接?

最终会拼接成 (元素1,元素2,元素3,元素4,元素5,…,元素n)

<if test="ids != null and ids.size() > 0">AND ID IN<foreach collection="ids" item="id" open="(" close=")" separator=",">#{id}</foreach>
</if>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python正则表达式中的分组

表达式中的分组 它是可以通过" () “来进行分组&#xff0c;更专业的表达就是捕获组&#xff0c;每个完整的” () “可以分为一组&#xff0c;同时&#xff0c;” () “中还可以嵌套” () "&#xff0c;即组之间还可以存在更小的组 概念 1、当我们在一个正则表达式…

最短路径算法——A*算法

A*算法是静态路网中求解最短路径最有效的直接搜索算法&#xff0c;也是解决许多搜索问题的有效算法&#xff0c;广泛应用于机器人路径搜索、游戏动画路径搜索等。它是图搜索算法的一种。 A*算法是一种启发式的搜索算法&#xff0c;它是基于深度优先算法(Depth First Search, D…

pgsql-使用dump命令制作数据库结构、数据快速备份bat脚本

一、背景 通过pgsql的dump命令可以快速的做数据库表结构、表数据的备份&#xff0c;随着业务不断的增加单库单实例已经不能满足业务需要。技术人员是比较懒惰的&#xff0c;每次敲相同命令或是无脑的复制黏贴操作感觉都是对精神的一种摧残&#xff0c;解决摧残的方法就是把命令…

脑肿瘤有哪些分类? 哪些人会得脑肿瘤?

脑肿瘤&#xff0c;作为一类严重的脑部疾病&#xff0c;其分类复杂多样&#xff0c;主要分为原发性脑肿瘤和脑转移瘤两大类。原发性脑肿瘤起源于颅内组织&#xff0c;常见的有胶质瘤、脑膜瘤、生殖细胞瘤、颅内表皮样囊肿及鞍区肿瘤等。其中&#xff0c;胶质瘤作为最常见的脑神…

dict 之ai学习

我的代码&#xff1a; k["name","age","job"] v1["zhangsan",25,"programmer"] v2["lisi",33,"worker"] v3["wangwu",55,"scientist"] s4dict(zip(k,v1,v2,v3)) for key,valu…

Java 零基础自学,如何系统全面地自学 Java 语言?

粉丝问&#xff1a;他只是一个普通人&#xff0c;初识Java&#xff0c;真的很想学好它。但是现在却只是在网上课堂上看Java基础课程&#xff08;入门知识&#xff0c;面向对象&#xff0c;常用类&#xff0c;异常等等&#xff09;看着看着就发现一头雾水&#xff0c;没有方向&a…

nodejs学习之process.env.NODE_ENV

简介 process对象是 Node 的一个全局对象&#xff0c;提供当前 Node 进程的信息。它可以在脚本的任意位置使用&#xff0c;不必通过require命令加载。该对象部署了EventEmitter接口。 process.env 属性返回包含用户环境的对象 使用 pnpm init新建index.js const { env } r…

【C++】类和对象(二)

个人主页 创作不易&#xff0c;感谢大家的关注&#xff01; 文章目录 ⭐一、类的默认成员函数&#x1f48e;二、构造函数⏱️三、析构函数&#x1f3dd;️ 四、拷贝构造函数&#x1f384;五、赋值运算符重载&#x1f3e0;六、取地址运算符重载&#x1f389;const成员 ⭐一、类…

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划(ERP)-解读

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划&#xff08;ERP&#xff09; 3.7.1 企业资源规划的概念3.7.2 企业资源规划的结构3.7.2.1 生产预测3.7.2.2 销售管理&#xff08;计划&#xff09;3.7.2.3 经营计划&#xff08;生产计划大纲&#xff09;3.7.2.4 …

C语言 | Leetcode C语言题解之第240题搜索二维矩阵II

题目&#xff1a; 题解&#xff1a; bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target){int i 0;int j matrixColSize[0] - 1;while(j > 0 && i < matrixSize){if(target < matrix[i][j])j--;else if(target > matrix[…

ORBSLAM3 ORB_SLAM3 Ubuntu18.04 ROS Melodic 虚拟镜像 下载

build.sh 和 build_ros.sh编译结果截图&#xff1a; slam测试视频&#xff1a; orbslam3 ubuntu18.04 test 下载地址&#xff08;付费使用&#xff0c;不能接受请勿下载&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/13YeJS4RGa3fBrG8BKfPbBw?pwds6vg 提…

Docker 运维常用命令及问题案例

目录 以下是一些常见的 Docker 命令&#xff1a; 镜像相关&#xff1a; 容器相关&#xff1a; 数据卷相关&#xff1a; 网络相关&#xff1a; 其他&#xff1a; 常见问题案例&#xff1a; 案例一&#xff1a;容器无法启动 案例二&#xff1a;容器性能问题 案例三&…

运维 | Linux 系统中 MySQL 的安装与使用记录

Linux 系统中 MySQL 的安装与使用记录 介绍 基本信息 在 Linux 系统中&#xff0c;MySQL 是一种常用的关系型数据库管理系统。 MySQL 默认安装位置&#xff1a;/var/lib/mysql 检查默认安装位置&#xff1a; which mysql该命令将显示 MySQL 二进制可执行文件的路径。在大…

python--实验15 数据分析与可视化

目录 知识点 1 数据分析概述 1.1流程 1.2定义 1.3数据分析常用工具 2 科学计算 2.1numpy 2.1.1定义 2.1.2创建数组的方式 2.1.3np.random的随机数函数 3 数据可视化 3.1定义 3.2基本思想 3.3Matplotlib库 3.3.1模块 4 数据分析 4.1Pandas 4.2数据结构 4.3基…

伪原创文章生成器软件,为你自动写作文章效率高

在当今快节奏的数字化时代&#xff0c;内容创作的需求如潮水般涌来。无论是博主们需要频繁更新的优质博文&#xff0c;还是企业宣传需要的大量文案&#xff0c;亦或是学者们的研究成果阐述&#xff0c;都对写作的效率提出了极高的要求。而就在这时&#xff0c;伪原创文章生成器…

软件测试点

案例&#xff1a; 需求&#xff1a; 动物品系&#xff1a;动物类型-动物品系体重&#xff1a;[1,无穷)年龄&#xff1a; 等价类&#xff1a;6个 界面测试&#xff1a; 默认值、颜色、布局动物品系下拉框&#xff0c;数据来源&#xff0c;排序规则 功能测试&#xff1a; …

Python游戏开发之制作捕鱼达人游戏-附源码

制作一个简单的“捕鱼达人”游戏可以使用Python结合图形界面库&#xff0c;比如Pygame。Pygame是一个流行的Python库&#xff0c;用于创建视频游戏&#xff0c;它提供了图形、声音等多媒体的支持。以下是一个基础的“捕鱼达人”游戏框架&#xff0c;包括玩家控制一个炮台来射击…

Java并发编程与高并发解决方案笔记

本课程将结合大量图示及代码演示&#xff0c;带你掌握多线程并发编程&#xff08;线程安全&#xff0c;线程调度&#xff0c;线程封闭&#xff0c;同步容器等&#xff09;与高并发处理思路与手段&#xff08;扩容&#xff0c;缓存&#xff0c;队列&#xff0c;拆分等&#xff0…

Linux—KVM虚拟化中(虚拟机克隆,快照,还原,删除)等应用实例

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?

1. 本地开发环境 在本地开发环境中&#xff0c;可以使用Docker Compose来管理和运行Java应用程序容器和MySQL容器。通常&#xff0c;会创建一个docker-compose.yml文件&#xff0c;定义需要的服务及其配置。 以下是一个示例docker-compose.yml文件: version: 3 services:app…