mybatis使用resultType的时候,有的属性加载不出来

现在有个实例,是这样的,如图:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.juhehl.kapu.mapper.TbCardExtraMapper">
	<select id="getSelledCardList" resultType="com.juhehl.kapu.rest.vo.SelledCard">
		SELECT
			tb_card.*, tb_transaction.done_price,
			tb_transaction.done_time
		FROM
			tb_card
		LEFT JOIN tb_transaction ON tb_transaction.card_id = tb_card.id
		WHERE
			`status` = 2
		ORDER BY
			done_time DESC
	</select>
</mapper>

这里使用resultType返回,结果集类型是SelledCard,是自己定义的pojo,说实话,自己有时候用着比较密码,什么时候用resultType,什么时候用resultMap,比较乱,所以我先按resultType这样写,看能否得到自己想要的结果,得到的结果如下:

              "auctionMode": null,
                "startPrice": null,
                "directBuy": null,
                "directBuyPrice": null,
                "validPrice": null,
                "currentPrice": null,
                "bidTime": null,
                "price": 800,
                "bargaining": true,
                "autoRefusePrice": null,
                "amount": 1,
                "auctionTime": null,
                "startAuctionTime": null,
                "expressInfo": null,
                "backup": "",
                "crUserId": null,
                "status": 2,
                "endTime": null,
                "createTime": null,
                "updateTime": null,
                "descCard": null,
                "donePrice": null

结果有很多空值,但是有的值又有值,这就比较奇怪了。

通过观察,发现一个特点,如果数据库中的字段名称和这个pojo类中的属性名称一样,比如说,数据库中的是title,属性中也叫title,那么这个值就会正确的赋值。那么另一种情况就是,比如说数据库中叫end_time,但是在pojo类中叫endTime,那么这样的属性就无法正确的赋值,所以得到结论,如果pojo类中的属性名称和字段名称一致,那么就不需要resultMap,反之需要。

所以现在这种情况就需要使用resultMap了,如下:

 <result column="direct_buy_price" property="directBuyPrice" jdbcType="DECIMAL" />
	    <result column="valid_price" property="validPrice" jdbcType="DECIMAL" />
	    <result column="current_price" property="currentPrice" jdbcType="DECIMAL" />
	    <result column="bid_time" property="bidTime" jdbcType="INTEGER" />
	    <result column="price" property="price" jdbcType="DECIMAL" />
	    <result column="bargaining" property="bargaining" jdbcType="BIT" />
	    <result column="auto_refuse_price" property="autoRefusePrice" jdbcType="DECIMAL" />
	    <result column="amount" property="amount" jdbcType="INTEGER" />
	    <result column="auction_time" property="auctionTime" jdbcType="INTEGER" />
	    <result column="start_auction_time" property="startAuctionTime" jdbcType="TIMESTAMP" />
	    <result column="express_info" property="expressInfo" jdbcType="VARCHAR" />
	    <result column="backup" property="backup" jdbcType="VARCHAR" />
	    <result column="cr_user_id" property="crUserId" jdbcType="BIGINT" />
	    <result column="status" property="status" jdbcType="INTEGER" />
	    <result column="end_time" property="endTime" jdbcType="TIMESTAMP" />
	    <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
	    <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
	    <result column="done_time" property="doneTime" jdbcType="TIMESTAMP" />

把字段从头到尾,进行映射一遍,就可以取到正确的值了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值