之前在《使用技巧-MyBatis參數映射》《使用技巧-Mybatis參數映射(2)》提到了Mybatis的一些參數映射技巧,但是平時使用的時候有些小伙伴可能不知道自己寫的#{}表達式能不能獲取到對應的實體對象的值,今天抽空整了一個Mybatis參數映射工具,我們可以通過這個工具來測試我們的表達式能否獲取到對應的實體對象參數,測試方式非常簡單,只需要用mAIn方法按下面步驟執行即可,一起來看看吧
- 創建main方法
- 通過工具的MApperProxyFactory獲取自定義接口的代理對象
ProdistPackageDao prodistPackageDao = MapperProxyFactory.getMapper(ProdistPackageDao.class);
- 設置接口需要的參數
ProdistPackage prodistPackage = new ProdistPackage();
prodistPackage.setProdistOfferNum("32800205364");
ArrayList<ProdistPackage> prodistPackages1 = new ArrayList<>();
prodistPackages1.add(prodistPackage);
- 調用接口
prodistPackageDao.selectByProdistOfferNum3(prodistPackages1, "aa");
- 通過工具的MapperProxyFactory查看能否獲取value值
//通過工具提供的MapperProxyFactory.XMLKeyGetValue來模擬對應xml中的#{}字段,
//其中XMLKeyGetValue中的參數就是#{}中的參數名,我們可以通過這個來獲取到參數值
Object value = MapperProxyFactory.XMLKeyGetValue("packages[0].prodistOfferNum");
//如果參數沒有問題的話,則Mybatis就能獲取到對應的參數值了
//然后我們在項目中就可以使用這個表達式了
System.out.println(value);
- 完整過程
public class Test {
public static void main(String[] args) {
//1、首先需要寫一個接口,也就是對應的mapper
//2、通過工具的MapperProxyFactory獲取你的接口的代理對象
ProdistPackageDao prodistPackageDao = MapperProxyFactory.getMapper(ProdistPackageDao.class);
//3、設置你的接口需要的參數
ProdistPackage prodistPackage = new ProdistPackage();
prodistPackage.setProdistOfferNum("32800205364");
ArrayList<ProdistPackage> prodistPackages1 = new ArrayList<>();
prodistPackages1.add(prodistPackage);
//4、調用對應的mapper接口
prodistPackageDao.selectByProdistOfferNum3(prodistPackages1, "aa");
//5、通過工具提供的MapperProxyFactory.XMLKeyGetValue()來模擬對應xml中的#{}字段,
//其中XMLKeyGetValue中的參數就是#{}中的參數名,我們可以通過這個來獲取到參數值
Object value = MapperProxyFactory.XMLKeyGetValue("packages[0].prodistOfferNum");
//如果參數沒有問題的話,則Mybatis就能獲取到對應的參數值了
//然后我們在項目中就可以使用這個表達式了
System.out.println(value);
}
}
需要注意的是,工具本身并不能連接數據庫,他只是模擬xml中#{}獲取參數對象的過程
我把源代碼放到了gitee上,點擊鏈接下載吧!