Mybatis参数映射搞不明白?来试试这个工具吧!


之前在《使用技巧-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中#{}获取参数对象的过程

Mybatis参数映射搞不明白?来试试这个工具吧!

 

我把源代码放到了gitee上,点击链接下载吧!

本文收集自互联网,如果发现有涉嫌侵权或违法违规的内容,请联系6532516@qq.com以便进行及时清除
分享到