mybatis一些需要注意的点,看看你有木有遇到过

  在开始文章之前,想随便说两句

  近期工作比较忙,一直没时间去更新文章

  原因:

  1.懒

  2.懒

  3.懒

  其实吧还有一部分原因是因为写这些文章,可能比较浅显。觉得没啥必要

  但是应该还是能帮助一部分新手的

  由于长期没更新文章,头条悄悄警告我说,再不发文你的黄V就会被取消。

  好吧,想想如果取消了,下次再申请又得过各种优质

  于是乎,今天就写点吧

  写啥好呢,就随便说说我们常用的mybatis吧

  主要是工作和学习中,遇到的意想不到的注意事项

  希望能对你们有帮助

  知道的大佬们可以忽略

  mybatis是一个到目前为止还是比较常用的orm框架,虽然有缺点但是也有优点

  我想大多数公司没选用hibernate、jpa可能由于业务上需要个性化定制sql,直接在mybatis xml里自由发挥比较爽,尽管它比较冗长

  那么在使用mybatis时,笔者简单的分享下几个坑或者注意事项如下:

  xml里 if 针对于Integer、Short、Long等数字包装类判空的问题

  

  and id=#{id}

  

  如上代码,如果id是String类型是没啥问题,但是碰到数字包装类时可能会和预想的情况截然相反。比如id=0,你想无论如何这个条件一定是true吧。因为0怎么可能等于null 或者等于空字符串呢?!

  事实上id=0时,这个条件就是false。

  看源码说明就知道为何了

  源码

  If the object is a Number,

  its double-precision floating-point value is compared with zero;

  non-zero is treated as true, zero as false;

  If the object is a Character, its boolean value is true if and only

  if its char value is non-zero;

  Otherwise, its boolean value is true if and only if it is non-null.

  什么意思呢?

  为了方便国人都能看懂,我就谷歌翻译一把,贴出来

  如果对象是数字,

  将其双精度浮点值与零进行比较;

  非零被视为true,零被视为false;

  如果对象是字符,则当且仅当其布尔值是true时

  如果其char值不为零;

  否则,当且仅当其为非null时,其布尔值才为true。

  ok,看完应该就明白了吧。

  resultType和resultMap使用不当造成的问题

  

  

  

  

  这个想必都遇到过,提一嘴是想说使用的时候注意下这个地方。至于两者区别,可以自己去百度,自己查的理解的比小编干说来的更实在

  xml 中sql参数接收不到值

  可能因为dao层缺少了@param("参数名") 注解,这个参数名要和xml中的#{参数名} 一致

  插入语句返回自增id主键的问题

  这个需要在 xml 用 foreach 设置 useGeneratedKeys=”true”和keyProperty=”id”即可

  ok,随便写点,希望能帮到一些条友。

  先到这里吧~

posted @   linjingyg  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示