使用动态sql时,if标签不起作用

这篇具有很好参考价值的文章主要介绍了使用动态sql时,if标签不起作用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

场景:

问题分析:

问题解决:


场景:

简单讲一下应用场景

我拿到一个项目,完成后端数据处理,在进行可选条件查询时,使用动态sql

使用动态sql时,if标签不起作用,SpringBoot,Mybatis-plus,bug,sql,数据库,mybatis

 在mapper.xml中我先是这么写的

<select id="list" resultType="com.yizhi.student.domain.StudentInfoDO">
        select * from s_student_info
       <where>

           <if test="name!=null">
               student_name like concat('%',#{name},'%')
           </if>
           <if test="tocollegeId!=null">
               and tocollege=#{tocollegeId}
           </if>


           <if test="tomajorId!=null">
               and tomajor=#{tomajorId}
           </if>
           <if test="classId!=null">
               and class_id=#{classId}
           </if>
       </where>
       limit #{currPage},#{pageSize}
    </select>

 然后,就出现if标签失效的情况,关键是它有时候也会返回到前端数据,给我都搞蒙了

反复查看,加上网搜索类似案例

大致知道是什么原因

问题分析:

在前端向后端传递数据时,不一定传递的是null,也会是空字符串。

果然,在加上判断后可以执行if文章来源地址https://www.toymoban.com/news/detail-819225.html

问题解决:

<select id="list" resultType="com.yizhi.student.domain.StudentInfoDO">
        select * from s_student_info
       <where>

           <if test="name!=null and name!=''">
               student_name like concat('%',#{name},'%')
           </if>
           <if test="tocollegeId!=null and tocollegeId!=''">
               and tocollege=#{tocollegeId}
           </if>


           <if test="tomajorId!=null and tomajorId!=''">
               and tomajor=#{tomajorId}
           </if>
           <if test="classId!=null and classId!=''">
               and class_id=#{classId}
           </if>
       </where>
       limit #{currPage},#{pageSize}
    </select>

到了这里,关于使用动态sql时,if标签不起作用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序引入Vant Weapp修改样式不起作用,使用外部样式类进行覆盖

            在项目中使用第三方组件修改css样式时,总是出现各种各样问题,修改的css样式不起作用,没有效果,效果不符合预期等。 栗子(引入一个搜索框组件) 实现效果:  左侧有一个搜索文字背景为蓝色,接着跟一个搜索框 wxml wxss emmm...明明我们css都写了,这出现的是什么鬼   审查

    2024年02月02日
    浏览(56)
  • Spring Boot 3.1.2版本使用javax.servlet.Filter时,发现Filter不起作用

    在学习Filter的过程中,我实现了Filter的init和destory方法以及doFilter方法后,运行SpringBoot程序发现,我的控制台中并没有输出ini和destory中的调试信息。 代码如下:  可以看到控制台中并没有输出initialize Filter和destory Filter等信息  利用postman发送http请求发现access Filter也没有输出

    2024年03月09日
    浏览(43)
  • vue项目为例解决element ui 时间选择器 picker使用样式穿透不起作用问题

    今天在开发中 需要修改时间选择器弹出的这个组件的样式 但这个东西比较坑爹 首先 不能影响其他组件 就是其他组件用了时间选择器 不能受到我们写的样式的影响 那么 就只好穿透了 但你会发现 这东西是作用与body下的 就很坑 穿透我试了挺久的 不起作用 但官方文档有提供

    2024年02月05日
    浏览(41)
  • Mybatis中where标签和if标签结合使用说明

    由于不小心将 and 或者 or 写在了语句后面,导致mybatis无法自主判别,这种问题在新上手的同学中很是常见。下面我们探讨一下,在哪些情况下Mybatis无法判断动态SQL语句中的 and 或者 or 。 select筛选出视图对象的参数,用于给前端返回页面参数使用。 以下代码格式是正确,我们

    2023年04月08日
    浏览(37)
  • MyBatis:动态 SQL 标签

    MyBatis 动态 SQL 标签 ,是一组预定义的标签,用于构建动态的 SQL 语句,允许在 SQL 语句中使用条件、循环和迭代等逻辑。通过使用动态 SQL 标签,开发者可以根据不同的条件和参数生成不同的 SQL 语句,实现更加灵活的数据访问操作。但是,需要谨慎处理 SQL 注入问题,确保所

    2024年02月04日
    浏览(60)
  • springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 参数的作用

    在Spring Boot应用中,可以通过配置文件来控制当找不到请求处理器(handler)时是否抛出异常。具体的配置参数是 spring.mvc.throw-exception-if-no-handler-found 。 默认情况下,该参数的值为 false ,即当找不到请求处理器时,Spring MVC会返回404 Not Found响应。如果将该参数设置为 true ,则当

    2024年02月12日
    浏览(36)
  • 动态sql以及常用的标签

    指根据不同的条件生成不同的sql 接口: xml文件: 编写实体类 utils: 小技巧:开启驼峰命名转换 配置: 那就先写个接口吧  写个sql:  接下来测试一下 当我们没给传参时会查出所有信息 当map里有参数时:只会查询对应的数据 说明我们所写的动态sql生效,这就是动态sql里最简

    2024年02月14日
    浏览(32)
  • Springboot 配置动态多数据源(Mybatis-plus)

    前言:在项目中需要用到动态切换多数据源,查阅Mybatis-plus文档得知可以通过@DS注解,但该方法主要针对不同内容的数据源,而目前场景是相同内容的数据库需要在运行时根据请求头动态切换,因此文档方法不适用。 注意,不要使用dynamic-datasource-spring-boot-starter依赖包。 应用

    2024年02月12日
    浏览(42)
  • grpc + springboot + mybatis-plus 动态配置数据源

    前言 这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 1.1 项目初始化 项目初始化的时候会调用com.baomidou.dynamic.datasource.DynamicRoutingDataSource对象的addDataSource方法添加数据源,数据源存进dataSourceMap中。 1.2 接口请求时候 进行数据操作时,

    2024年02月09日
    浏览(42)
  • MyBatis 动态SQL之<where>标签-

    where 标签主要用来简化 SQL 语句中的条件判断,可以自动处理 AND/OR 条件。 在if标签和choose-when-otherwise标签的案例中,SQL语句加入了一个条件’1=1’,它既保证了where后面的条件成,页避免了where后面出现的第一个词语是and 或者or之类的。 假设把条件‘1=1’去掉,可以出

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包