【Mybatis系列】Mybatis判断问题_mybatis 判断 noteq,2024年最新那些BAT大厂的前端面试官到底在想些什么

本文介绍了作者为帮助程序员高效自学Web前端整理的学习资料,涵盖零基础到进阶课程,重点剖析了MyBatis中字符串与Integer比较的源码,以及提供了一个系统化的学习路径和资源获取方式。同时鼓励加入技术交流社群以共同成长。
摘要由CSDN通过智能技术生成

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

有一个查询方法,是将实体作为参数传入,id 的值为 0

@Component
public class TestRunner3 implements CommandLineRunner {

    @Autowired
    private TestMapper testMapper;

    @Override
    public void run(String... args) throws Exception {
        Test3PO test3PO = new Test3PO();
        test3PO.setId(0);
        test3PO.setDate(new Date());
        this.testMapper.judge(test3PO);
    }
}

xml 中的语句

<select id="judge">
    SELECT id, date
    FROM test1
    where 1=1
    <if test="query.id!=null and query.id!=''">
        order BY id DESC
    </if>
</select>

2.结果

输出的 sql 结果如下,也就是 query.id!=''为false了,是不是比较震惊,一个 Integer 类型的 0 和字符串相互比较,结果居然是true

SELECT id, date
FROM test1
where 1=1

二.源码探究

1.ASTNotEq

因为比较的是!=方法,所以在 ASTNotEq 的源码的比较地方打了断点,关键点在于 OgnlOps.equal(v1, v2)方法

image-20240104112736297

2.isEqual 方法

断点跟进 compareWithConversion 方法

image-20240104112911654

3.compareWithConversion

image-20240104112941621

4.doubleValue

看到这里就真相大白了,mybatis 的源码在判断的时候,先判断字符串的长度,再根据字符串的长度给出一个 Double 类型的值,因为字符串为空字符串,长度为 0,所以返回的值为 0.0,与参数 0 的返回值 0.0 一致,真的狗

image-20240104113005638

5.判断中的 in 使用
<select id="judge" resultType="integer">
    <if test="query.id in (1,2,3,4)">
        SELECT #{query.id}
    </if>
</select>

  • <select> 标签:表示一个查询语句。在这里,id 属性是该查询语句的唯一标识符,resultType 属性指定了查询结果的类型为整数。
  • <if> 标签:这是一个动态 SQL 元素,用于在运行时根据条件动态地生成 SQL 语句的一部分。在这里,test 属性表示条件判断,如果 query.id 的值在 (1, 2, 3, 4) 这个集合中,就会执行 <if> 标签内的 SQL 语句。
  • SQL 语句:在 <if> 标签内部,SELECT #{query.id} 是实际的 SQL 查询语句。#{query.id} 是 MyBatis 中的参数占位符,它会被实际的参数值替代。这里的查询语句是动态生成的,根据条件是否成立而变化。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

算法

  1. 冒泡排序

  2. 选择排序

  3. 快速排序

  4. 二叉树查找: 最大值、最小值、固定值

  5. 二叉树遍历

  6. 二叉树的最大深度

  7. 给予链表中的任一节点,把它删除掉

  8. 链表倒叙

  9. 如何判断一个单链表有环

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
友,可以添加V获取:vip1024c (备注前端)**
[外链图片转存中…(img-J5KInIsl-1713424607458)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值