【MyBatis】sql列名与实体类属性名不同的解决方式

sql列名Java实体类属性名不同的解决方式

例如:

数据库

CREATE TABLE orders(
    order_id INT PRIMARY KEY AUTO_INCREMENT,
    order_no VARCHAR(20),
    order_price FLOAT
);

Java实体类

public class Orders {
    private int id;
    private String orderNo;
    private float price;
  // ... get,set方法省略
}

这时候字段名与实体类名冲突,解决方法如下:

<?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.zhiyou100.hhz.dao.OrderDao">

	<!-- selectAll1为错误演示,查询结果为null -->
    <select id="selectAll1" resultType="com.zhiyou100.hhz.bean.Orders">
        select order_id,order_no,order_price from orders
    </select>
    
    
    <!-- 方法1:通过resultMap标签和属性可以使数据库字段名与java实体类名产生映射 -->
    <resultMap type="com.zhiyou100.hhz.bean.Orders" id="OrderMap">
        <id column="order_id" property="id"/>
        <result column="order_no" property="orderNo"/>
        <result column="order_price" property="price"/>
    </resultMap>
    <select id="selectAll2" resultMap="OrderMap">
        select order_id,order_no,order_price from orders
    </select>
    
    
    <!-- 方法2:起别名,在写select查询字段名时起个和实体类一样的名即可,比较low... -->
    <select id="selectAll3" resultType="com.zhiyou100.hhz.bean.Orders">
        select order_id id,order_no orderNo,order_price price from orders
    </select>
    
</mapper>
发布了552 篇原创文章 · 获赞 201 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/sinat_42483341/article/details/104045477