Mybatis 動(dòng)態(tài)表名+Map參數(shù)傳遞+批量操作詳解
需求:
之前項(xiàng)目一個(gè)變動(dòng),需要對(duì)3張mysql數(shù)據(jù)庫(kù)表數(shù)據(jù)進(jìn)行清洗,3張表表名不同,表結(jié)構(gòu)完全相同,需要對(duì)這3張表進(jìn)行相同的增、改、查動(dòng)作,一開(kāi)始比較緊急先對(duì)一張表進(jìn)行操作,后來(lái)復(fù)制了3個(gè)一樣的 service、dao、mapper等。后來(lái)對(duì)代碼進(jìn)行優(yōu)化,研究了一下動(dòng)態(tài)表名的處理。
1,查詢(xún)操作:
查詢(xún)操作只需要傳入動(dòng)態(tài)表名的時(shí)候,傳遞參數(shù)仍然是map
mapper.xml內(nèi),需要使用statementType="STATEMENT",采用非預(yù)編譯模式
mapper.xml內(nèi),動(dòng)態(tài)表名的獲取使用 ${tableName}
2,批量插入操作:
查詢(xún)操作只需要傳入動(dòng)態(tài)表名的時(shí)候,傳遞參數(shù)仍然是map
mapper.xml內(nèi),不需要使用statementType="STATEMENT",否則會(huì)在運(yùn)行時(shí)報(bào)錯(cuò)提示語(yǔ)法錯(cuò)誤(具體原因不是很清楚)。
動(dòng)態(tài)表名的獲取使用 ${tableName}, 而insert 的 collection 屬性名為傳入?yún)?shù)的map內(nèi)的key名,不需要任何修飾符。
list內(nèi)容使用 #{item.guid}來(lái)獲取,而不是$。
補(bǔ)充知識(shí):mybatis動(dòng)態(tài)傳入表名并返回map,返回空間點(diǎn)的坐標(biāo)
mybatis學(xué)習(xí)中
動(dòng)態(tài)傳入表名并返回某幾個(gè)字段map,取某個(gè)空間表的shape字段的坐標(biāo)。代碼如下
xml文件
<select id="selectLocationByPrimaryKey" statementType="STATEMENT" resultType="java.util.HashMap" parameterType="java.util.Map"> select t.shape.minx as X,t.shape.miny as Y from ${sourceObj} t where OBJECTID = ${featureId} </select>
注意statementType必須,且值必須是大寫(xiě)的STATEMENT,參數(shù)傳入為多個(gè),用map。
dao文件
public void selectLocByPK(String sourceObj, Long featureId) { params.put("sourceObj", "sde."+sourceObj); params.put("featureId", featureId); Map map = this.getSqlSessionTemplate().selectOne("selectLocationByPrimaryKey", params); Double x = (Double)map.get("X"); Double y = (Double)map.get("Y"); System.out.println(x+","+y); }
注意查詢(xún)的是sde用戶下的表名是參數(shù)傳遞的sourceObj,因?yàn)橛闷渌脩暨B接的數(shù)據(jù)庫(kù) 所以查詢(xún)其他用戶下的表的時(shí)候必須用用戶名加表名。當(dāng)然前提你這個(gè)用戶有查詢(xún)其他用戶表的權(quán)限。params類(lèi)型是HashMap。xml文件中取值時(shí)候必須要跟此地方綁定的key值一直,不然取到為null.此處key為xml文件的時(shí)候查詢(xún)列的別名。
只是一條數(shù)據(jù),多條數(shù)據(jù)可以用selectList 方法 返回List ,xml基本不用變。
以上這篇Mybatis 動(dòng)態(tài)表名+Map參數(shù)傳遞+批量操作詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
復(fù)雜JSON字符串轉(zhuǎn)換為Java嵌套對(duì)象的實(shí)現(xiàn)
這篇文章主要介紹了復(fù)雜JSON字符串轉(zhuǎn)換為Java嵌套對(duì)象的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java嵌入式開(kāi)發(fā)的優(yōu)勢(shì)及有點(diǎn)總結(jié)
在本篇內(nèi)容里小編給大家整理了關(guān)于Java嵌入式開(kāi)發(fā)的優(yōu)勢(shì)及相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2022-11-11sftp和ftp 根據(jù)配置遠(yuǎn)程服務(wù)器地址下載文件到當(dāng)前服務(wù)
這篇文章主要介紹了sftp和ftp 根據(jù)配置遠(yuǎn)程服務(wù)器地址下載文件到當(dāng)前服務(wù)的相關(guān)資料本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10