mybatis使用时,如果只希望返回部分字段,需要临时建立一个类来接收返回结果吗?

譬如本来的类是

class Book{

    int id;
    int price;
    String name;
    String place;

}

现在只需要返回两个字段,price和name
难道需要临时建立一个类

class BookPart{

    int price;
    String name;

}

当然,如果字段很少的话,直接返回Book就行了,
但是如果字段很多,那就只需要返回需要的那部分,怎么办?

阅读 16.3k
7 个回答
新手上路,请多包涵

估计你Mapper.xml里面对于查询结果用了resultMap导致单独查询某些字段会报错找不到其他字段吧。

你可以把Mapper.xml里面的select对应的resultMap改为resultType直接对应你的接收类

    <select id="get" resultType="com.bean.Book" >

再单独查询两个字段试试。

新手上路,请多包涵

resultType=“java.util.Map” 就行了 然后用List<Map>接收

不用,直接用map来接收就可以了。

不理解你的意图,你只是

select * from xxx

然后返回的pojo只包含两个字段?还是说

select id,name from xx

这样?

可以定义resultMap 标签来接收。
如: 要取 price , name字段。
定义一个 resultMap 来实现,如下:
<resultMap id="BaseResultMap" type="com.xx.BookPart" >

<result column="price " property="price "  />
<result column="name" property="name"  />

</resultMap>

<select id="getNameAndPrice" resultMap="BaseResultMap" parameterType="java.lang.String">

    select  price,name from  Bookpart 

</select>

以上,即可实现取部分字段。

新手上路,请多包涵

有三种方法。

<select id = "get">
 select proce, name  from bookpart
</select>

1.直接返回map

2.定义resultMap 新建一个类。

3.直接返回该对象。 只映射两个字段,其他自动为null

这个涉及到领域建模了:VO,DO,DTO等等,建议看看这个

PO BO VO DTO POJO DAO DO这些Java中的概念分别指一些什么? - 知乎 https://www.zhihu.com/questio...

然后根据你的业务情况 评价是否需要细分

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题