欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Mybatis: 返回不同实体(对象数组)

发布时间:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Mybatis: 返回不同实体(对象数组) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

       现在有这样一个需求:我这里有20个表名,然后随便选一个,你给我到这个所选的表里面把所有数据给我拿回来。之前的话我们都是有一个确定的表名,根据这个表创建一个实体类,当返回数据时,把resultTyoe设成这个实体类就可以了。但是现在要查哪一个表不确定了,也就是说你的resulttype不能写成一个实体类,有些人说为啥不行,行行行你写吧,20个表对应20个实体类,累死你。

       最开始想的是直接写成

public List<Object> fetData (Map<String,Object> params);<select id="getXXXBeanList" parameterType="map" resultType="Object">select * from ${tableName} </select>

想法没啥问题,但是方式不太对,这样最后拿到的数据只有第一列,为啥,我的sql语句没啥毛病啊。

       其实这就是实体和Object的区别了,一个实体类,里面定义好了一些属性字段,当你的resultType写成一个实体类时,拿到数据后,它会去找你实体类里面的属性字段去对应,但是Object里面毛都没有。要想返回像实体类那样的东西,还是得靠Map<String,Object>。怎么理解呢,其实你看啊,Map里面的String是不是就对应实体类里面的属性字段,Object就对应具体的值,我认为这个Map<String,Object>就是一个只有属性字段没有方法的实体类。

public List<Map<String,Object>> fetData (Map<String,Object> params);<select id="getXXXBeanList" parameterType="map" resultType="map">select * from ${tableName} </select>

       当你这么写之后,就发现,最后拿到的就是一个对象数组,你传一个不同的表,他就返回一个不同的对象数组,就不用定义那么多的实体类了。

       有一点要注意,在Mybatis里面,resultType为map时,会把含null值得字段给过滤掉。

总结

以上是生活随笔为你收集整理的Mybatis: 返回不同实体(对象数组)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。