Mybatis(sql列名與實體類名不同)


解決字段名與實體類屬性名不相同的沖突

  在創建實體類的時候,有時會碰到實體類與字段名不相同,這時候就會發生沖突,測試時候程序沒有報錯但是結果是空的。

 

例如:

  數據庫

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">
    <select id="selectAll1" resultType="com.zhiyou100.hhz.bean.Orders">
        select order_id,order_no,order_price from orders
    </select>
    
    
    <select id="selectAll2" resultMap="OrderMap">
        select order_id,order_no,order_price from orders
    </select>
    
    <select id="selectAll3" resultType="com.zhiyou100.hhz.bean.Orders">
        select order_id id,order_no orderNo,order_price price from orders
    </select>
    
    <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>
</mapper>

  selectAll1為錯誤演示,查詢結果為null

  1. resultMap

  通過resultMap標簽和屬性可以使數據庫字段名與java實體類名產生映射,

  如上selectAll2(注意查詢的字段如果不是*應該寫數據庫字段名,否則會報錯)。

 

   2. 起別名

  可以在寫select查詢字段名時起個和實體類一樣的名即可,如selectAll3(比較low,也不建議使用)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM