国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

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

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

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

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

問題現(xiàn)象

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

解決辦法

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

問題原因

某些關鍵詞,mybatis會認為是某種類型,下面列出來一些,后面發(fā)現(xiàn)再補充。

size, threshold, modCount是int類型

loadFactor是float類型

補充:mybatis使用@Param的坑

在mybatis中@Param注解的作用是為參數(shù)指定一個名稱,在mapper文件中使用,而不是使用mybatis的arguments[0,1…]代替。但是在非動態(tài)的mapper——mybatis根據(jù)mapper接口創(chuàng)建實現(xiàn)類,@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 的內(nèi)部類 MethodSignature 中。

根據(jù)源碼一步一步的遞歸:

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的動態(tài)代理生成mapper對象
  return (T) Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] { mapperInterface }, mapperProxy);
 }
 public T newInstance(SqlSession sqlSession) {
//MapperProxy實現(xiàn)了Invocation接口
  final MapperProxy<T> mapperProxy = new MapperProxy<T>(sqlSession, mapperInterface, methodCache);
  return newInstance(mapperProxy);
 }

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久国产免费 | 亚洲免费精品 | 欧美成人精品在线视频 | 69日影院 | 欧美日一区| 国产成人精品免费视频大全最热 | 亚洲第一黄 | 免费精品视频 | 免费成人一级片 | 九九九久久国产免费 | 亚洲国产视频网 | 免费欧美一级 | 中文字幕一区二区三区日韩精品 | 国产精品久久av | 国产精品久久久久久久久久免费看 | 日本不卡一区二区三区在线观看 | 亚洲高清视频在线 | 91免费黄色片 | 亚洲国产日韩欧美 | 国产精品毛片一区视频播不卡 | 不卡av一区二区三区 | 福利资源在线观看 | 激情久久婷婷 | 在线91av| 欧美激情精品久久久久久 | 欧美成人精品欧美一级私黄 | 日日摸夜夜添夜夜添特色大片 | 免费一区二区三区四区 | 亚洲精品一区 | 黄色影院 | 久久精品美女 | 欧美精品一区二区蜜臀亚洲 | 亚洲精品一二区 | 久久久美女 | 99国产在线 | 国产99久久精品一区二区永久免费 | 性高湖久久久久久久久aaaaa | 国产一区二区三区四 | 99精品一区二区三区 | 成人免费网站 | 日韩在线一区二区三区免费视频 |