首页 > 其他分享 >mybatis格式化输出标签之where 标签

mybatis格式化输出标签之where 标签

时间:2023-05-03 16:11:58浏览次数:38  
标签:node 标签 查询 写法 mybatis where id

复制copy是程序员提高效能的核心方式,但是由于有些知识陈旧了,年复一年的复制,

而没有系统的知识学习,并不晓得还有更合理或者更优雅的写法。

1=1 这种东西很多项目很常见,但是应该被放进历史的垃圾桶的。

<select id="getAgentList" resultType="com.wht.demo.dao.vo.AgentVo">  
	select 
		t.node_id as nodeId,
		t.host_name as hostName,
		t.address_ip as addressIp
	from 
	t_node_agent t 
	where 1=1
	<if test='appId !=null and appId != "" '>
		and t.app_id= #{appId}  
	</if>
	<if test='osType!=null and osType!= "" '>
			and t.os_type= #{osType}  
	</if>
</select> 

如上SQL,对于传入的查询条件,我们往往是需要空判断。
1、如果没有1=1并且查询条件为空,最后sql就会以where结尾。
2、如果没有1=1 有查询条件传入,也会多一个and关键字导致SQL错误。
最low的方式是 在where 后面带一个 1=1
在运维旧项目的时候,这种写法可以说遍地都是,并不美观。

常用写法应该如下:

<select id="getAgentList" resultType="com.wht.demo.dao.vo.AgentVo">  
	select 
		t.node_id as nodeId,
		t.host_name as hostName,
		t.address_ip as addressIp
	from 
	t_node_agent t 
	<where> 
		<if test='appId !=null and appId != "" '>
			and t.app_id= #{appId}  
		</if>
		<if test='osType!=null and osType!= "" '>
			and t.os_type= #{osType}  
		</if>
	</where>
</select> 

这种写法,就会自动处理where 和and关键字的拼接,确保适配所以参数有无的sql拼接。

标签:node,标签,查询,写法,mybatis,where,id
From: https://www.cnblogs.com/hcgk/p/17369187.html

相关文章

  • mybatis之OGNL表达式
    对象导航图语言(ObjectGraphNavigationLanguage),简称OGNL,是应用于Java中的一个开源的表达式语言(ExpressionLanguage)这里制作简单的了解,知道是什么。OGNL表达式OGNL常用表达式e1ore2e1ande2e1==e2,e1eqe2e1!=e2,e1neqe2e1<e2,e1lte2e1<=e2,e1l......
  • Springboot 之 Mybatis-plus 多数据源
    简介Mybatis-puls多数据源的使用,采用的是官方提供的dynamic-datasource-spring-boot-starter包的@DS注解,具体可以参考官网:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starterpom.xml文件引入如下依赖主要引入dynamic-datasource-spring-boot-starter包<project......
  • Mybatis
    #Mybatis0.概述 1).框架:框架中一般都是所有程序员都需要开发的重复代码,框架把这些提供好之后,程序员就可以把精力专注在核心业务上。 2).Mybatis:MyBatis是一款优秀的持久层框架,使用Mybatis可以轻松的实现Java程序向数据库发送SQL语句,而且对于SQL查询回来的结果进行方便......
  • MyBatis-第三方缓存
    第三方缓存整合ehcache.xml<?xmlversion="1.0"encoding="UTF-8"?><ehcachexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"><!--磁盘保存路径-->......
  • springboot mybatis-plus 3.5.1代码生成器配置
    springbootmybatis-plus3.5.1代码生成器配置https://blog.csdn.net/Lean_on_Me/article/details/128066822  ......
  • Mybatis
    Mybatis记录1.创建Maven工程用idea创建maven工程2.引入Mybatis依赖<!--mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version>......
  • Struts2标签学习
    <td><s:iftest="%{#l.res_scope==1}">完全共享</s:if><s:elseiftest="%{#l.res_scope==2}">班级共享</s:elseif><s:else>好友共享</s:else></td><h3>发布资源</h3&......
  • MybatisPlus高级特性之SimpleQuery工具类
    1、是很么?SimpleQuery可以对selectList查询后的结果使用Stream流进行操作,使其可以返回指定的结果,简洁了api的调用2、怎么玩?案例演示(1)list操作/***list(LambdaQueryWrapper<E>wrapper,SFunction<E,A>sFunction,Consumer<E>...peeks)*参数说明:*p......
  • MybatisPlus高级特性之ActiveRecord模式
    1、是什么?ActiveRecord是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表;而模型类的一个实例对应表中的一行记录。ActiveRecord一直广受解释型动态语言(PHP、Ruby等)的喜爱,通过围绕一个数据对象进行CRUD操作。而Java作为准静态(编译型)语言,对于ActiveRec......
  • Mybatis SQL映射文件
    https://blog.csdn.net/sun_soul/article/details/111773947SQL映射文件增删改标签<insertid="insertEmployee">INSERTINTOt_employee(empname,gender,email)VALUES(#{empName},#{gender},#{email})获取自增主键的值让MyBatis自动的将自增的id赋值给传入的employee对象......