uniqueresult 有哪些优势?这几个特点值得关注!

吉云

今儿个,咱来聊聊我在捣鼓代码时遇到的一个小坑——uniqueResult。这事儿还得从我那天吭哧吭哧写项目说起。

那天,我寻思着从数据库里头捞一条特定的数据出来。你知道的,就那种,根据某个唯一的条件,比如用户的ID,嗖的一下就把那条记录给拽出来。以前,我老用list(),然后取第一个,但总觉得有点儿绕弯子。

后来我翻翻Hibernate的文档,发现uniqueResult这个好东西。这名字起得就挺带劲,"唯一的结果",多直接!我心想这不就是专门为我这种情况准备的嘛

uniqueresult 有哪些优势?这几个特点值得关注!

于是我兴冲冲地把代码改。原来那一大坨,现在就剩下一行:


Object result = *();

心里美滋滋,感觉自己又掌握一项新技能。

结果,一跑起来,啪!程序直接给我撂脸子,蹦出来一个大大的异常。我当时就懵,心想:这啥情况?

uniqueresult 有哪些优势?这几个特点值得关注!

仔细一看错误信息,说是结果不唯一。,我这才想起来,uniqueResult这玩意儿,脾气有点儿倔。它要的是独一无二的结果,你要是给它整出两条以上的记录,或者压根儿就没找到,它都跟你急。

这下我可犯难。我得保证我这查询条件,绝对、绝对只能对应一条记录!

  • 我先是检查数据库,确认数据的唯一性。
  • 然后,我又把查询语句仔仔细细地过一遍,生怕哪里写错。

uniqueresult 有哪些优势?这几个特点值得关注!

我还加一层判断逻辑:


Object result = *();

if (result != null) {

// 处理结果

} else {

uniqueresult 有哪些优势?这几个特点值得关注!

// 记录为空的情况

这么一折腾,总算是把这问题给解决。

不过我还是想吐槽一下,uniqueResult直接强转成Integer类型是会报错的,细节决定成败。

uniqueresult 有哪些优势?这几个特点值得关注!

总结一下这回实践

uniqueResult用起来是真方便,但前提是你得摸清它的脾气。用它的时候,一定得确保你的查询结果是唯一的,不然,它可不给你留情面,直接抛异常给你看。这回实践也让我明白一个道理:写代码这事儿,不能想每个方法、每个细节都得弄得明明白白,才能少踩坑,少走弯路!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]