Mybatis如何通过泛型来动态调整返回参数

简介: Mybatis如何通过泛型来动态调整返回参数

在我们使用Mybatis的时候,会设置一个resultType类型,这个类型一般指定为java.util.Map,如此的话,我们就可以使用List,Map来接收返回结果了。

现在想要的效果其实就是想要在service层分别用两种不同的类型的进行接收同一个SQL的参数。

就比如如下的代码中一样的。

List<ADemo> list1 = demoDao.findDemo();
Long total = demoDao.findDemo();

这里我们就来看一下具体的实现吧。

知识点

首先想要的解决方式就是泛型,只有泛型才能指定不同的类型之间的转换。

这里我们要说的是如何给方法加入泛型,以满足返回值类型不同的情况。

方法加泛型,自然就是用来修饰了,如下代码。

<T> T findDemo();

上面的代码就可以使用任何返回类型来接收了。

但是很重要的一点,当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值了。

如此虽然没有全部实现想要的效果,但是也在允许范围之内解决了这个问题。

目录
相关文章
|
3月前
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
65 10
|
4月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
6月前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
88 11
|
6月前
|
SQL Java 数据库连接
mybatis动态SQL常用语法总结
MyBatis 使用 OGNL 表达式语言处理动态SQL,如 `if` 标签进行条件判断,`choose`、`when`、`otherwise` 实现多条件选择,`where`、`set` 管理SQL关键字,`trim` 提供通用修剪功能,`foreach` 遍历集合数据。`sql` 和 `include` 用于代码重用,`selectKey` 处理插入后的返回值。参数传递支持匿名、具名、列表、Map、Java Bean和JSON方式。注意SQL转义及使用合适的jdbcType映射Java类型。
123 7
|
6月前
|
SQL
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
|
7月前
|
Java 数据库连接 mybatis
mybatis参数报错Parameter ‘docId‘ not found. Available parameters are [arg1, arg0, param1, param2]
mybatis参数报错Parameter ‘docId‘ not found. Available parameters are [arg1, arg0, param1, param2]
|
7月前
|
SQL XML Java
MyBatis动态SQL------------------choose用法
MyBatis动态SQL------------------choose用法
85 1
|
7月前
|
SQL XML Java
MyBatis第四课动态SQL
MyBatis第四课动态SQL
|
7月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
|
7月前
|
SQL Java 数据库连接
MyBatis动态SQL
MyBatis动态SQL
73 0