发布网友 发布时间:2024-09-27 06:21
共1个回答
热心网友 时间:9分钟前
theme:smartblue
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
背景在我们使用Mybatis的时候,会设置一个resultType类型,这个类型一般指定为java.util.Map,如此的话,我们就可以使用List,Map来接收返回结果了。
现在想要的效果其实就是想要在service层分别用两种不同的类型的进行接收同一个SQL的参数。
就比如如下的代码中一样的。
List<ADemo>list1=demoDao.findDemo();Longtotal=demoDao.findDemo();这里我们就来看一下具体的实现吧。
知识点首先想要的解决方式就是泛型,只有泛型才能指定不同的类型之间的转换。
这里我们要说的是如何给方法加入泛型,以满足返回值类型不同的情况。
方法加泛型,自然就是用来<T>修饰了,如下代码。
<T>TfindDemo();上面的代码就可以使用任何返回类型来接收了。
但是很重要的一点,当resultType=java.util.Map的时候,这样写的时候是会报错的。
所以我们就改写了一种的方式。
<T>List<T>findDemo();这样,我们换了一种方式,如上代码所示,果然,很完美的运行了,随着泛型不同的方式注入,如下代码:
List<ADemo>list1=demoDao.findDemo();List<Map<String,Long>>list2=demoDao.findDemo();如果想要取到之前的Long值,就可以使用list2.get(0).get('total')进行获取对应的long值了。
如此虽然没有全部实现想要的效果,但是也在允许范围之内解决了这个问题。