百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

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

ztj100 2025-01-07 17:22 11 浏览 0 评论

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

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

原因:

1.懒

2.懒

3.懒

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

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

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

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

于是乎,今天就写点吧

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

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

希望能对你们有帮助

知道的大佬们可以忽略


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

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

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

  • xml里 if 针对于Integer、Short、Long等数字包装类判空的问题
<if test="id != null  and id != ' ' ">
  and id=#{id}
</if>

如上代码,如果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使用不当造成的问题
<!-- 错误写法 -->
<select id="query" resultMap="java.util.Map" >
<!-- 正确写法 -->
<select id="query" resultType="java.util.Map">

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

  • xml 中sql参数接收不到值

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

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

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


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

先到这里吧~

相关推荐

Whoosh,纯python编写轻量级搜索工具

引言在许多应用程序中,搜索功能是至关重要的。Whoosh是一个纯Python编写的轻量级搜索引擎库,可以帮助我们快速构建搜索功能。无论是在网站、博客还是本地应用程序中,Whoosh都能提供高效的全文搜...

如何用Python实现二分搜索算法(python二分法查找代码)

如何用Python实现二分搜索算法二分搜索(BinarySearch)是一种高效的查找算法,适用于在有序数组中快速定位目标值。其核心思想是通过不断缩小搜索范围,每次将问题规模减半,时间复杂度为(O...

路径扫描 -- dirsearch(路径查找器怎么使用)

外表干净是尊重别人,内心干净是尊重自己,干净,在今天这个时代,应该是一种极高的赞美和珍贵。。。----网易云热评一、软件介绍Dirsearch是一种命令行工具,可以强制获取web服务器中的目录和文件...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。...

从零开始学习 Python!2《进阶知识》 Python进阶之路

欢迎来到Python学习的进阶篇章!如果你说已经掌握了基础语法,那么这篇就是你开启高手之路的大门。我们将一起探讨面向对象编程...

白帽黑客如何通过dirsearch脚本工具扫描和收集网站敏感文件

一、背景介绍...

Python之txt数据预定替换word预定义定位标记生成word报告(四)

续接Python之txt数据预定替换word预定义定位标记生成word报告(一)https://mp.toutiao.com/profile_v4/graphic/preview?pgc_id=748...

假期苦短,我用Python!这有个自动回复拜年信息的小程序

...

Python——字符串和正则表达式中的反斜杠(&#39;\&#39;)问题详解

在本篇文章里小编给大家整理的是关于Python字符串和正则表达式中的反斜杠('\')问题以及相关知识点,有需要的朋友们可以学习下。在Python普通字符串中在Python中,我们用'\'来转义某些普通...

Python re模块:正则表达式综合指南

Python...

Python中re模块详解(rem python)

在《...

python之re模块(python re模块sub)

re模块一.re模块的介绍1.什么是正则表达式"定义:正则表达式是一种对字符和特殊字符操作的一种逻辑公式,从特定的字符中,用正则表达字符来过滤的逻辑。(也是一种文本模式;)2、正则表达式可以帮助我们...

MySQL、PostgreSQL、SQL Server 数据库导入导出实操全解

在数字化时代,数据是关键资产,数据库的导入导出操作则是连接数据与应用场景的桥梁。以下是常见数据库导入导出的实用方法及代码,包含更多细节和特殊情况处理,助你应对各种实际场景。一、MySQL数据库...

Zabbix监控系统系列之六:监控 mysql

zabbix监控mysql1、监控规划在创建监控项之前要尽量考虑清楚要监控什么,怎么监控,监控数据如何存储,监控数据如何展现,如何处理报警等。要进行监控的系统规划需要对Zabbix很了解,这里只是...

mysql系列之一文详解Navicat工具的使用(二)

本章内容是系列内容的第二部分,主要介绍Navicat工具的使用。若查看第一部分请见:...

取消回复欢迎 发表评论: