码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【mybatis】在mapper层或DAO层没有@param注解也能通过变量名获取参数


    目录

      • 事件起因
      • 环境和工具
      • 原因解释
      • 结束语

    在mapper层(或DAO层)不使用@param注解,在本地环境仍能在xml通过#{<变量名>}的方式回去到参数值,但线上的linux环境就不能获取到值会报错!!!

    事件起因

    今天在线上程序报了个错,虽然大致原因已经猜到了(因为昨天给线上改了一个小功能,上线了,但今天就有很多人反馈这儿有问题),但是我在本地验证的时候,就是复现不了。

    线上报错日志:
    在这里插入图片描述
    我的猜测原因估计是:mapper层有多个参数,但是我没有使用@param注解导致找不到参数,但是我在本地直接使用的实体名字也能找到这些参数:
    我的mapper层和xml的写法:
    xml和mapper层的写法
    这样写,也能取到值,但是打好jar包到线上服务器(linux环境)去就是会出错(上面那个日志里面的错误)

    环境和工具

    idea 2021.1.1
    mysql 5.7
    jdk 1.8

    原因解释

    让我比较信服的一篇解释:
    https://blog.csdn.net/sugartang23/article/details/120909688

    大致就是要满足三个要求才能即使没有添加@Param注解 xml中也能通过变量名进行查找到变量#{}的方式进行取值
    ①采用 Java 8 编译。
    ②编译时加上-parameters 选项。
    ③mybatis在3.4.1以上

    还有一点就是通过idea的高版本的setting-Build,Exception,Deployment-Complier-Java Complier里面的最后这儿,如下图,添加-parameters就能使mapper层不需要添加@param注解 通过变量名就能读取到mapper层的参数
    setting不需要param注解
    还有一个解释就是 这个不使用@Param注解就能通过#{< 变量名 >}的方式在xml中读取到变量名的值的方式是jdk1.8才有的,之前版本的jdk都是没有这个功能的

    我的那个疑问其实还是没有解决,因为我在自己本地试这个没问题,但是打包jar包放到linux环境上去运行后就是有这个问题存在,线上的jdk,数据库都是一样的版本,但线上就是会出这个问题,暂时先记录到这儿

    结束语

    若是对你有所帮助的话,希望能获得你的 点赞、评论、收藏,这将是对我很大的鼓励!!! 这对我真的很重要!!!
    蟹蟹٩(‘ω’)و

  • 相关阅读:
    React如何实现国际化?
    油猴脚本:bing 搜索结果居中
    网络安全行业黑话大全
    深入浅出Java多线程(十三):阻塞队列
    链表OJ题+牛客题
    标签类目体系(面向业务的数据资产设计方法论)-读书笔记2
    基于 Cyclone IV 在 Quartus 中配置 IP 核中的 PLL 与 RAM 的详细步骤
    python从数据库导出电子表格
    【毕业季·进击的技术er】年少有梦,何惧彷徨
    SpringBoot3数据库集成
  • 原文地址:https://blog.csdn.net/chirp_CQ/article/details/127094025
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号