一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 解決MyBatis @param注解參數類型錯誤異常的問題

解決MyBatis @param注解參數類型錯誤異常的問題

2021-08-05 11:44wangjinnan16 Java教程

這篇文章主要介紹了解決MyBatis @param注解參數類型錯誤異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

問題現象

今天使用mybatis遇到個很奇怪的問題,我使用一個參數@param("threshold"),類型是java的double,但是很奇怪,一直告訴我參數轉換錯誤,int不能轉double,我就奇怪了,哪里來的int。

解決辦法

我感覺可能使用用到了mybatis的關鍵字,所以就把threshold換了個名字,果然好了。

問題原因

某些關鍵詞,mybatis會認為是某種類型,下面列出來一些,后面發現再補充。

size, threshold, modCount是int類型

loadFactor是float類型

補充:mybatis使用@Param的坑

在mybatis中@Param注解的作用是為參數指定一個名稱,在mapper文件中使用,而不是使用mybatis的arguments[0,1…]代替。但是在非動態的mapper——mybatis根據mapper接口創建實現類,@param注解是不起作用的。

閱讀mybatis的源碼得知,檢查@param注解的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
private boolean hasNamedParams(Method method) {
   boolean hasNamedParams = false;
   final Object[][] paramAnnos = method.getParameterAnnotations();
   for (Object[] paramAnno : paramAnnos) {
    for (Object aParamAnno : paramAnno) {
     if (aParamAnno instanceof Param) {
      hasNamedParams = true;
      break;
     }
    }
   }
   return hasNamedParams;
  }

此方法位于 org.apache.ibatis.binding.MapperMethod 的內部類 MethodSignature 中。

根據源碼一步一步的遞歸:

MethodSignature的構造方法——>MapperMethod的構造方法——>MapperProxy的cachedMapperMethod 和invoke方法 ——> MapperProxyFactory中的 newInstance 方法。

?
1
2
3
4
5
6
7
8
9
10
@SuppressWarnings("unchecked")
 protected T newInstance(MapperProxy<T> mapperProxy) {
//jdk的動態代理生成mapper對象
  return (T) Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] { mapperInterface }, mapperProxy);
 }
 public T newInstance(SqlSession sqlSession) {
//MapperProxy實現了Invocation接口
  final MapperProxy<T> mapperProxy = new MapperProxy<T>(sqlSession, mapperInterface, methodCache);
  return newInstance(mapperProxy);
 }

在整合spring與mybatis,使用spring提供的sqlSessionTemplate進行查詢時,沒有從MapperRegistry的mapper緩存集合中取mapper,而是直接使用配置的sqlSessionTemplate。

所以這種清況下,@param注解是無效的。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/wangjinnan16/article/details/75284394

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年视频在线播放 | 亚洲精品一区二区久久久久 | 亚洲国产成人99精品激情在线 | 99re热精品这里精品 | 日本人欧美xx | 亚洲国产精久久久久久久 | 羲义嫁密着中出交尾gvg794 | 国内精品久久久久影院中国 | 二区免费视频 | 羞羞影院午夜男女爽爽影院网站 | a免费看 | 性刺激欧美三级在线现看中文 | 日韩成人在线网站 | 美女被爆操 | gay台湾无套男同志可播放 | 性做久久久久免费观看 | 亚洲人成伊人成综合网久久 | 92国产福利视频一区二区 | 成人资源影音先锋久久资源网 | 小小水蜜桃视频高清在线观看免费 | 亚洲国产精品线在线观看 | 四虎在线成人免费网站 | 久久精品免视看国产 | 免费一级欧美片在线观看 | 22sihu国产精品视频影视资讯 | 午夜影院和视费x看 | 人人人人看人人人做人人 | 国产精品久久久久这里只有精品 | 免费观看视频网站 | 日韩天堂在线 | 三级伦理影院 | 国产原创精品 | 日日碰日日操 | 成人中文字幕在线高清 | 亚洲羞羞裸色私人影院 | 深夜在线观看 | 网站在线观看 | 果冻传媒第一二三专区 | 国产精品第2页 | 成年人在线免费观看视频网站 | 好紧水好多 |