1、建立訂單表sql
order_id order_name order_price數據庫
1 蘋果 6.5app
2 香蕉 3dom
3. 桔子 2spa
2、定義實體類code
public Orderxml
{對象
private Integer id;get
private String name;class
private float price;
}
3、xml文件代碼
查不到數據xml以下
<mapper namespace="me.gacl.mapping.orderMapper"> <!-- 根據id查詢獲得一個order對象,使用這個查詢是查詢不到咱們想要的結果的, 由於實體類的屬性名和數據庫的字段名對應不上的緣由,所以沒法查詢出對應的記錄 --> <select id="getOrderById" parameterType="int" resultType="me.gacl.domain.Order"> select * from orders where order_id=#{id} </select> </mapper>
解決方法以下,方法一
直接將 返回的數據庫字段名與實體類的屬性名 設置成同樣,返回類型(resultType)直接設置成接收的實體類名.
<mapper namespace="me.gacl.mapping.orderMapper"> <!-- 根據id查詢獲得一個order對象,使用這個查詢是能夠正常查詢到咱們想要的結果的, 這是由於咱們將查詢的字段名都起一個和實體類屬性名相同的別名,這樣實體類的屬性名和查詢結果中的字段名就能夠一一對應上 --> <select id="selectOrder" parameterType="int" resultType="me.gacl.domain.Order"> select order_id id, order_name name,order_price price from orders where order_id=#{id} </select> </mapper>
方法二
注意,這裏使用了resultMap轉換了一下,因此要將resultType改成resultMap。
<mapper namespace="me.gacl.mapping.orderMapper"> <!-- 根據id查詢獲得一個order對象,使用這個查詢是能夠正常查詢到咱們想要的結果的, 由於咱們經過<resultMap>映射實體類屬性名和表的字段名一一對應關係 --> <select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap"> select * from orders where order_id=#{id} </select> <!--經過<resultMap>映射實體類屬性名和表的字段名對應關係 --> <resultMap type="me.gacl.domain.Order" id="orderResultMap"> <!-- 用id屬性來映射主鍵字段 --> <id property="id" column="order_id"/> <!-- 用result屬性來映射非主鍵字段 --> <result property="name" column="order_name"/> <result property="price" column="order_price"/> </resultMap> </mapper>
總結:
使用MyBatis進行查詢操做時沒法查詢出相應的結果,可是純sql又能查出數據時,須要考慮下是否是字段對應實體類的屬性出現問題,解決方法有以下兩點
1>經過在查詢的sql語句中定義字段名的別名,讓字段名的別名和實體類的屬性名一致,這樣就能夠表的字段名和實體類的屬性名一一對應上了,這種方式是通過在sql語句中定義別名來解決字段名和屬性名的映射關係的。
2>經過<resultMap>來映射字段名和實體類屬性名的一一對應關係。這種方式是使用MyBatis提供的解決方式來解決字段名和屬性名的映射關係的。