mybatis字段名与类属性名不相同的冲突

新建一个表

CREATE TABLE orders(
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(20),
order_price FLOAT
);
INSERT INTO orders(order_no, order_price) VALUES('aaaa', 23);
INSERT INTO orders(order_no, order_price) VALUES('bbbb', 33);
INSERT INTO orders(order_no, order_price) VALUES('cccc', 22);

然后建一个javaBean

public class Order {
private int id;
private String orderNo;
private float price;
}

建立映射文件

<select id="getOrder" parameterType="int" resultType="Order">
        select * from orders where order_id=#{id}
</select>

这个时候由于javaBean里面的id和数据库里面的order_id不对应,执行后返回的是以数据库里面取得名字的字段值,这时候bean里面没有这些字段名所以赋值失败。

这时候有两种解决方法:


 

方式一:通过在sql语句中定义别名

<select id="selectOrder" parameterType="int" resultType="_Order">
select order_id id, order_no orderNo,order_price price from orders where order_id=#{id}
</select>

方式二:定义一个映射

<select id="getOrder2" parameterType="int" resultMap="getOrder2Map">
        select * from orders where order_id=#{id}
</select>
    
<resultMap type="Order" id="getOrder2Map">
        <id property="id" column="order_id"/>
        <result property="orderNo" column="order_no"/>
        <result property="price" column="order_price"/>
</resultMap>

 

  

转载于:https://www.cnblogs.com/tuifeideyouran/p/4347475.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值