日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

mybatis省略@Param注解操作

瀏覽:210日期:2023-10-21 12:45:58

項目是Springboot+mybatis,每次寫一堆@Param注解感覺挺麻煩,就找方法想把這個注解給省了,最后確實找到一個方法

1.在mybatis的配置里有個屬性useActualParamName,允許使用方法簽名中的名稱作為語句參數名稱

我用的mybatis:3.4.2版本Configuration中useActualParamName的默認值為true

源碼簡單分析:

MapperMethod的execute方法中獲取參數的方法convertArgsToSqlCommandParampublic Object execute(SqlSession sqlSession, Object[] args) { Object result; Object param; switch(this.command.getType()) { case INSERT: param = this.method.convertArgsToSqlCommandParam(args); result = this.rowCountResult(sqlSession.insert(this.command.getName(), param)); break; case UPDATE: param = this.method.convertArgsToSqlCommandParam(args); result = this.rowCountResult(sqlSession.update(this.command.getName(), param)); break; case DELETE: param = this.method.convertArgsToSqlCommandParam(args); result = this.rowCountResult(sqlSession.delete(this.command.getName(), param)); break; case SELECT: if (this.method.returnsVoid() && this.method.hasResultHandler()) { this.executeWithResultHandler(sqlSession, args); result = null; } else if (this.method.returnsMany()) { result = this.executeForMany(sqlSession, args); } else if (this.method.returnsMap()) { result = this.executeForMap(sqlSession, args); } else if (this.method.returnsCursor()) { result = this.executeForCursor(sqlSession, args); } else { param = this.method.convertArgsToSqlCommandParam(args); result = sqlSession.selectOne(this.command.getName(), param); if (this.method.returnsOptional() && (result == null || !this.method.getReturnType().equals(result.getClass()))) {result = Optional.ofNullable(result); } } break; case FLUSH: result = sqlSession.flushStatements(); break; default: throw new BindingException('Unknown execution method for: ' + this.command.getName()); } if (result == null && this.method.getReturnType().isPrimitive() && !this.method.returnsVoid()) { throw new BindingException('Mapper method ’' + this.command.getName() + ' attempted to return null from a method with a primitive return type (' + this.method.getReturnType() + ').'); } else { return result; }}

然后再看參數是怎么來的,convertArgsToSqlCommandParam在MapperMethod的內部類MethodSignature中:

public Object convertArgsToSqlCommandParam(Object[] args) { return this.paramNameResolver.getNamedParams(args);}

getNamedParams在ParamNameResolver,看一下ParamNameResolver的構造方法:

public ParamNameResolver(Configuration config, Method method) { Class<?>[] paramTypes = method.getParameterTypes(); Annotation[][] paramAnnotations = method.getParameterAnnotations(); SortedMap<Integer, String> map = new TreeMap(); int paramCount = paramAnnotations.length; for(int paramIndex = 0; paramIndex < paramCount; ++paramIndex) { if (!isSpecialParameter(paramTypes[paramIndex])) { String name = null; Annotation[] var9 = paramAnnotations[paramIndex]; int var10 = var9.length; for(int var11 = 0; var11 < var10; ++var11) {Annotation annotation = var9[var11];if (annotation instanceof Param) { this.hasParamAnnotation = true; name = ((Param)annotation).value(); break;} } if (name == null) {if (config.isUseActualParamName()) { name = this.getActualParamName(method, paramIndex);}if (name == null) { name = String.valueOf(map.size());} } map.put(paramIndex, name); } } this.names = Collections.unmodifiableSortedMap(map);}

isUseActualParamName出現了,總算找到正主了,前邊一堆都是瞎扯。

2.只有這一個屬性還不行,還要能取到方法里定義的參數名,這就需要java8的一個新特性了,在maven-compiler-plugin編譯器的配置項中配置-parameters參數。

在Java 8中這個特性是默認關閉的,因此如果不帶-parameters參數編譯上述代碼并運行,獲取到的參數名是arg0,arg1......

帶上這個參數后獲取到的參數名就是定義的參數名了,例如void test(String testArg1, String testArg2),取到的就是testArg1,testArg2。

最后就把@Param注解給省略了,對于想省事的開發來說還是挺好用的

補充知識:mybatis使用@param('xxx')注解傳參和不使用的區別

我就廢話不多說了,大家還是直接看代碼吧~

public interface SystemParameterMapper { int deleteByPrimaryKey(Integer id); int insert(SystemParameterDO record); SystemParameterDO selectByPrimaryKey(Integer id);//不使用注解 List<SystemParameterDO> selectAll(); int updateByPrimaryKey(SystemParameterDO record); SystemParameterDO getByParamID(@Param('paramID') String paramID);//使用注解}

跟映射的xml

<select parameterType='java.lang.Integer' resultMap='BaseResultMap'> select id, paramID, paramContent, paramType, memo from wh_system_parameter where id = #{id,jdbcType=INTEGER} </select><select resultMap='BaseResultMap'> select id, paramID, paramContent, paramType, memo from wh_system_parameter where paramID = #{paramID} </select>

區別是:使用注解可以不用加parameterType

以上這篇mybatis省略@Param注解操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Mybatis 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产伊人久久| 国产婷婷精品| 六月丁香综合在线视频| 国产不卡精品| 亚洲第一精品影视| 蜜臀av国产精品久久久久| 欧美日韩黄网站| 国产精品久久久久久久免费观看 | 成人一区不卡| 91精品国产成人观看| 丝袜美腿高跟呻吟高潮一区| 国产欧美日韩免费观看| 日本一区二区免费高清| 亚洲激情偷拍| 国产乱人伦精品一区| 日韩一区三区| 综合欧美精品| 成人在线视频免费| 亚洲免费播放| 国产精品午夜av| 亚洲高清av| 最新亚洲国产| 国产一区二区三区黄网站| 欧美精品激情| 国产精品久久亚洲不卡| 99精品在线观看| 日韩av网站免费在线| 麻豆网站免费在线观看| 首页国产欧美日韩丝袜| 精品国产精品国产偷麻豆| 国产精品普通话对白| 久久精品天堂| 日韩制服丝袜av| 欧美激情另类| 亚洲精品第一| 亚洲黄色免费av| 三级亚洲高清视频| 激情综合婷婷| 亚洲免费福利一区| 久久免费黄色| 国产日产一区| 亚洲一区黄色| 日韩啪啪电影网| 国产美女久久| 99视频精品| 91亚洲国产成人久久精品| 中文精品电影| 播放一区二区| 欧美国产日韩电影| 美女精品网站| 日韩成人综合| 日韩精品视频一区二区三区| 成人羞羞在线观看网站| 欧美日韩一区二区国产| 五月精品视频| 亚洲精品**中文毛片| 国产麻豆一区二区三区| 日韩精品一级二级| 日韩激情精品| 亚洲精品成人一区| 国产一区二区三区四区二区| 亚洲免费在线| 欧美国产精品| 99国内精品| 精品国产黄a∨片高清在线| 国产免费成人| 久久国产精品美女| 亚洲一区二区毛片| 国产一区二区三区久久| 国产亚洲一区二区三区不卡| 蜜桃成人精品| 激情综合五月| 国产精品亚洲一区二区在线观看| 亚洲色图综合| 亚洲欧洲一区| 不卡中文字幕| 婷婷综合六月| 国产成人久久精品一区二区三区| 欧美日韩黄网站| 日本一区二区三区视频在线看 | 亚洲一二av| 亚洲成人三区| 久久激情婷婷| 日韩欧美综合| 在线亚洲人成| 裤袜国产欧美精品一区| 久久免费视频66| 国产极品一区| 国产精品一区免费在线| 啪啪亚洲精品| 日韩成人一级| 日本v片在线高清不卡在线观看| 99国产精品自拍| 午夜精品网站| 国产精品人人爽人人做我的可爱| 红桃视频国产精品| 欧美特黄视频| 亚洲免费成人| 老鸭窝毛片一区二区三区| 99re国产精品| 亚洲精品看片| 久久国际精品| 麻豆91精品视频| 97精品国产| 久久久精品网| 午夜av一区| 久久最新视频| 中文字幕av一区二区三区四区| 亚洲无线观看| 午夜久久av| 日本强好片久久久久久aaa| 日韩av资源网| 欧美xxxx性| 中文字幕系列一区| 91精品电影| 人人爽香蕉精品| 亚洲1区在线观看| 欧美精品中文| 国内精品亚洲| 香蕉精品久久| 免费看黄色91| 欧美一区影院| 麻豆一区二区在线| 国产精品久久久久蜜臀| 久久亚洲专区| 蜜臀国产一区二区三区在线播放 | 久久国产日本精品| 在线视频精品| 亚洲精品第一| 久久精品国产成人一区二区三区| 国内精品伊人| 激情婷婷欧美| 乱人伦精品视频在线观看| 蜜桃视频在线观看一区| 亚洲精品系列| 国产精品va| 日韩中文字幕高清在线观看| 亚洲国产日韩欧美在线| 日韩综合一区二区| 精品三级国产| 一区在线观看| 国产日韩一区二区三免费高清| 国模精品一区| aa国产精品| 国产精品4hu.www| 久久国产毛片| 97久久超碰| 久久婷婷久久| 亚洲tv在线| sm捆绑调教国产免费网站在线观看 | 视频在线观看一区| 久久av免费| 激情91久久| 国产精久久久| 亚洲少妇在线| 免费在线日韩av| 欧美日韩国产免费观看 | 亚洲色图综合| 国内精品伊人| 蜜臀久久久久久久| 91亚洲国产成人久久精品| 美女精品一区| 毛片在线网站| 日韩成人av影视| 久久精品av| 国产欧美一区二区三区米奇| 一区二区三区四区在线看| 国产精品午夜一区二区三区| 婷婷综合社区| 日产精品一区二区| 日韩精品亚洲专区在线观看| 99视频精品全国免费| 国产亚洲第一伦理第一区| 在线日韩一区| 美腿丝袜亚洲一区| 首页国产欧美久久| 亚洲va中文在线播放免费| 日本麻豆一区二区三区视频| 欧美日韩精品一区二区视频| 国产精品对白| 亚洲我射av| 欧美成人日韩| 国产不卡精品| 国产情侣久久| 久久不射中文字幕| 久久国产直播| 精品三级av| 欧美精品国产白浆久久久久| 欧美日韩视频一区二区三区| 色婷婷综合网| 国产欧美一级| 一区二区三区四区日韩| 久久精品高清| 黄毛片在线观看| 欧美国产另类| 91嫩草精品| 免费在线观看一区二区三区| 久久蜜桃精品| 岛国av在线播放| 美女视频一区在线观看|