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

来源:互联网 发布:java 教程pdf 编辑:程序博客网 时间:2024/05/18 23:13

实际的开发过程中,数据库表字段不一定与实体类中的属性一一对应,这样的话在使用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>

测试结果

这里写图片描述

阅读全文
0 0
原创粉丝点击