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

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

       最开始想的是直接写成

 public List fetData (Map params);
 
   
  

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

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

 public List> fetData (Map params);
 
  

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

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

你可能感兴趣的:(MyBatis)