mybatis-210721-02---动态sql-trim自定义字符串截取

老司机学习MyBatis之动态SQL使用trim自定义字符串截取 一、前言前面一个章节讲到,如果where标签里面,and或者or写在后面,最后字符串拼串后,如果最后一个条件没有加上,可能会出现SQL多出 and或者or 的情形。那我们是不是没有办法解决这种问题的产生,事实上MyBatis为我们提供了另外一种标签trim,可以简单粗暴的解决这个问题,下面我们通过案例来看看如何实现二、案例我们先来看看前面使用where标签时的情景现在我们对上面的XML做如下改造在... 阅读详情

mybatis-210721-02—动态sql-trim自定义字符串截取


EmployeeMapper.java

package com.bgy.mybatis.dao;
import java.util.List;
import com.bgy.mybatis.bean.Employee;

public interface EmployeeMapper {
	
	public List<Employee> getEmpsByConditionTrim(Employee employee);
}

EmployeeMapper.xml(笔记在这儿哦)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bgy.mybatis.dao.EmployeeMapper">
	
	<!--
		if
		choose(when,otherwise)
		trim(where,set)
		foreach
	-->
	<!--
		查询员工
			要求:
			携带了那个字段,查询条件就带上这个字段的值
	-->
	<select id="getEmpsByConditionTrim" resultType="com.bgy.mybatis.bean.Employee">
		select 
			* 
		from
			tbl_employee
			<!-- 
				解决将后面多出来的and或or,,where标签不能解决
				
				prefix:	
					前缀,trim标签体中是整个字符串  拼串后  的结果
					prefix给  拼串后  的整个字符串加一个前缀
				
				prefixOverrides:
					前缀覆盖,去掉整个字符串前面多余的字符
				
				suffix:
					后缀,给  拼串后  的整个字符串加一个后缀
					
				suffixOverrides:
					后缀覆盖,去掉整个字符串后面多余的字符
			-->
			<trim prefix="where" suffixOverrides="and">
				<if test="id!=null and id!=''">
					id=#{id} and
				</if>
				<if test="lastName!=null and lastName!=&quot;&quot;">
					last_name like #{lastName} and
				</if>
				<if test="email!=null and email.trim()!=&quot;&quot;">
					email like #{email} and
				</if>
				<!-- ognl会自动进行字符串和数字的转换判断	"0"==0 -->
				<if test="gender==0 or gender==1">
					gender=#{gender}
				</if>
			</trim>
	</select>
</mapper>

MybatisTest.java

package com.bgy.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import com.bgy.mybatis.bean.Department;
import com.bgy.mybatis.bean.Employee;
import com.bgy.mybatis.dao.DepartmentMapper;
import com.bgy.mybatis.dao.EmployeeMapper;

class MybatisTest {
	
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}

	
	/**
	 * 测试sql——trim
	 * @throws IOException
	 */
	@Test
	public void test() throws IOException{
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		try {
			EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
			
			Employee employee = new Employee(null,"","","1");
			List<Employee> emps = mapper.getEmpsByConditionTrim(employee);
			
			System.out.println(emps);
		} finally {
			sqlSession.close();
		}
	}
}
MyBatis动态sql_trim自定义字符串截取 MyBatis动态sql_trim自定义字符串截取 继续上次文章http://blog.youkuaiyun.com/zhupengqq/article/details/78632444 EmployeeMapperDynamicSQL.java package com.cn.mybatis.dao; import java.util.List; import com.cn. 阅读详情

相关推荐

深入探究贝叶斯网络(Bayesian Network):从基础原理到实际应用

贝叶斯网络,也称为信念网络或有向无环图模型,是一种概率图模型。它使用有向无环图(DAG)来表示随机变量之间的条件依赖关系。每个节点代表一个随机变量,边表示变量之间的条件依赖关系。贝叶斯网络作为一种强大的工具,通过结合概率论和图论,为复杂系统建模和推理提供了有效手段。无论是在医学诊断、故障检测还是自然语言处理等领域,它都展示了巨大的潜力。然而,其计算复杂度高、结构学习困难等挑战也需要我们在实际应用中不断优化算法和技术。希望通过本文,你能对贝叶斯网络有更深入的理解,并能够在实际项目中灵活应用这一强大工具。

qq_28791753的博客 5969

Mybatis学习笔记11 - 动态sql之trim标签

trim标签体中是整个字符串拼串后的结果。prefix="" 前缀: prefix给拼串后的整个字符串加一个前缀prefixOverrides="" 前缀覆盖: 去掉整个字符串前面多余的字符suffix="" 后缀: suffix给拼串后的整个字符串加一个后缀suffixOverrides="" 后缀覆盖:去掉整个字符串后面多余的字符 示例代码: 接口定义: package com.my...

weixin_30500473的博客 251

新手学习Vivado XDMA (1) - 配置详细分析

PCIe 在 Vivado XDMA 中的配置分析。

qq_18553915的博客 9709

myBatis拆分字符串参数,分割并遍历

mysql 拆分遍历

qq_43026206的博客 3864

网络系统实现技术之IPX与SPX

IPX/SPXNovell NetWare网络Novell公司为适应网络发展,将主机网络转换为PC网络,开发了Novell NetWare网络系统。该系统中基于客户机/服务器模式。以普通PC机做为客户机,以性能强大的服务器做为服务器,为客户机提供文件服务、数据库服务及其他服务。与前面的SNA模型一样,Novell NetWare也早于OSI模型,所以不能与OSI模型严格对应,但也有很明

成片的大树 9164

告别环境报错:用Pycharm一站式搞定Superset 3.0.0二次开发环境(Windows/Mac通用)

本文详细介绍了如何使用Pycharm一站式搭建Apache Superset 3.0.0的二次开发环境,涵盖Windows和Mac平台。通过虚拟环境配置、依赖管理、数据库初始化及前后端协同开发等步骤,帮助开发者高效解决环境报错问题,提升开发效率。特别适合需要进行Superset二次开发的工程师参考。

weixin_42549496的博客 316

【Mybatis】分割字符串

前言 springboot 2.1.1.RELEASE 分割字符串 <select id="selectXXXList" parameterType="XXX" resultMap="XXXResult"> select * from xxx <where> <if test="tagIds != null and tagIds != ''"> and <foreach item="tagId" collec

sayyy的专栏 9757

Qt图形几何之QRect详解:从基础操作到高级功能全解析

本文全面介绍了Qt框架中的QRect类,详细解析了其核心功能和使用方法。主要内容包括:1)QRect的基本概念与多种构造函数;2)矩形属性获取和状态判断方法;3)几何操作函数(移动、调整大小等);4)几何关系判断(包含、相交等);5)坐标变换和边距处理;6)实用功能与QRectF转换;7)综合应用示例(图形界面、碰撞检测、布局管理);8)性能优化建议和常见陷阱。通过丰富的代码示例,展示了QRect在Qt图形编程中的实际应用,帮助开发者掌握矩形处理的各项操作技巧,提升图形界面开发效率。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 117

MYSQL 常用内置方法整理

  mybatis--mapper.xml中使用转义字符 大于号 &gt; &amp;gt; 小于号 &lt; &amp;lt;  与 &amp; &amp;amp; 单引号 " &amp;apos; 双引号 ' &amp;quot;   字符串截取 ## 从左开始截取字符串 left(str, length)...

墨雨听风的博客 884

基于 STM32 的智慧图书馆智能控制系统设计与实现

智慧图书馆智能控制系统集成环境调控、安全监控、借阅管理与信息推送功能,通过 STM32 主控芯片联动传感器、执行器及云平台,实现图书馆智能化管理。系统架构分为感知层(传感器)、控制层(STM32 主控)、执行层(继电器 / 显示屏)及云端层(数据交互),支持温度自动调节、灯光自控、火情安防监控、天气推送及 RFID 借还书管理。本系统通过 STM32 实现多传感器融合与设备控制,结合 RFID 与云平台技术,构建了集环境智能调控、安全监控、便捷借阅于一体的智慧图书馆解决方案。

weixin_42300449的博客 2203

mybaits-plus通用CRUD详解及代码案例

文章目录mybaitsplus通用CRUD插入操作方法定义测试用例mybaitsplus主键生成策略设置自增主键设置输入主键:UUID:ID_WORKER_STR:ID_WORKER:更新操作根据id更新方法定义:方法步骤根据条件更新方法定义:更新步骤:根据条件更新(可以更新NULL)删除操作根据id删除方法定义:删除步骤:根据 entity 条件删除方法定义:删除步骤:根据ID 批量删除方法定义:删除步骤:查询操作根据id查询方法定义:查询步骤:根据id批量查询方法定义:查询步骤:根据 entity 条件

流楚丶格念的博客 3405

MyBatis基础篇五:获取参数方式

MyBatis获取参数值的两种方式

czj66666666666的博客 487

NVIDIA Isaac GR00T N1.5 人形机器人强化学习入门教程(四)Lerobot、宇树 G1 等不同形态机器人微调教程

本笔记本是一份关于如何在新的数据集上对GR00T-N1预训练模型进行微调的教程。

2506_90492529的博客 1667

mybatis的映射文件xml中对参数的处理--#{}

Mapple中传入参数情况: 1,单个参数,mybatis不会做特殊处理 #{参数名}:取出参数值。#{无论什么值,都可以取出} 2,多个参数,mybatis会做特殊处理 mybatis会把多个参数封装成一个Map。key:param1,param2,param3.....,获取参数的索引,固定的键名。param value:传入的参数值。 所以获取值使用:#{param1}:...

我爱吃红薯的博客 1567

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Mybatis源码全流程切割分析

1. Mybatis 本文mybatis源码的分析大致思路围绕着下列代码进行开展的 //获取SqlSession工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis-Config.xml")); //工厂生成一个SqlSession会话 SqlSession session = factory.openSession(tr

killbibi的博客 414

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mybatis在xml种截取时间字符串(获取日期)

【代码】mybatis在xml种截取时间字符串(获取日期)

linyiwwy的博客 1083

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

十、MybatisPlus

十一、MybatisPlus MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发 提高效率而生. 一、配置:application.properties配置文件中配置mysql的连接、添加日志的配置; 二、创建实体类: @TableId(type = IdType.AUTO)//id自增 //@TableId(type = IdType.INPUT)//一旦手动输入id之后,就需要自己设置id了(即测试类MybatisPlusAppli

Karen博客 1064

xml 截取 标签中的字符串;字符串去掉空格

tag 是需要截取的内容的外围标签 str 是需要截取的字符串 也就是xml 了 1 public static String getTagMid(String tag, String str) { 2 Pattern p = Pattern.compile("<" + tag + ">(.*)</" + tag + ">"...

dcl0531的博客 695

xml截取标签.取出文本(转)

package com.founder.cms.publish;import java.util.ArrayList;import java.util.List;import java.util.regex.Pattern;import java.util.regex.Matcher;/** *  * 按字节长度截取字符串(支持截取带HTML代码样式的字符串) *  * @param pa

永遠站在你身邊 1689

mybatis按照关键字(符号)截取字符串,字符串拼接,循环查询语句,分组求和函数用法

SQL语句1、按照关键字(符号)截取字符串,2、取集合参数某下标值,3、字符串拼接,4、循环查询语句,5、分组求和函数用法:&lt;select id="getSettleTableDetail"  parameterType="map" resultType="map"&gt;          SELECT                      SUM( ad.HOT_NUM) AS ho...

王静静的博客 2万+

字符串切割方式split,用mybatisplus的方式在mapper层改

【代码】字符串切割方式split,用mybatisplus的方式在mapper层改。

weixin_45958839的博客 960

MyBatis基于XML的使用——动态sql

MyBatis基于XML的使用——动态sql

weixin_53058174的博客 2129

oracle之在mybatis中常用的函数

5ifelse函数casewhenthen。4使用unionall排序需要嵌套。3将多条数据拼接在一起,多列转一行。2使用oralce自定义的函数。8SUBSTR截取字符串。7REPLACE替换。

qq_42797527的博客 1920
上一篇: mybatis-210721-01---动态sql-if判断&where查询条件
下一篇: mybatis-210721-03---动态sql-choose分支选择
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值