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: 返回不同实体(对象数组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis:传输多个参数
- 下一篇: Ionic 标签中添加单击事件 、双击事