您的位置:首页 > 其它

Mybatis学习笔记-解决字段名与实体类属性名不相同的冲突

2017-10-12 08:18 351 查看
实际的开发过程中,数据库表字段不一定与实体类中的属性一一对应,这样的话在使用Mybatis开发过程中就必须解决字段名与属性名不一致的冲突,否则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);


定义实体类

package com.taowd.mybatis.entry;
public class Orders {

private String id;
private String no;
private String price;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getNo() {
return no;
}

public void setNo(String no) {
this.no = no;
}

public String getPrice() {
return price;
}

public void setPrice(String price) {
this.price = price;
}

}


解决冲突的方案1:通过在sql语句中定义别名

<?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="mapper.ordersMapper">
<!-- 根据id查询得到一个Orders对象 -->
<select id="selectOrder" parameterType="int" resultType="_Orders">
select
order_id id, order_no no,order_price price from orders where
order_id=#{id}
</select>
</mapper>


解决冲突的方案2:使用resultMap进行映射

<!-- 解决方案2:使用resultMap进行映射 -->
<select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap">
select * from orders where order_id=#{id}
</select>
<resultMap type="_Orders" id="orderResultMap">
<id property="id" column="order_id" />
<result property="no" column="order_no" />
<result property="price" column="order_price" />
</resultMap>


测试结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐