解決表的列名和對象的屬性名不匹配


一、MyBatis使用resultMap解決表的列名和對象的屬性名不匹配

✿ 默認情況下,通過設置返回類型resultType 是要求表的列名和對象的屬性名要一致,否則會出錯。


1、方式一:使用別名:

 <select id="getList" parameterType="java.lang.Long" resultType="user">
	 select u_id id, u_name name, u_salary salary from t_user;
 </select>

★ 2、方式二:使用resultMap:

  • resultMap 和 resultType不能同時使用
  <!-- resultMap 結果集合對象映射:解決表的列名和對象的屬性名不匹配的問題
  	   id:唯一標識
  	   type:封裝結果集的每一行記錄的類型
  	   子元素:result 匹配對象中的哪一個屬性對應表的哪一列 【若是主鍵,建議使用id元素代替result元素提高性能】
   -->
  	  <resultMap id="BaseResultMap" type="User" >
  	  	<id column="u_id" property="id"/>
  	  	<result column="u_name" property="name"/>
  	  	<result column="u_salary" property="salary"/>
  	  </resultMap>

<select id="getList" parameterType="java.lang.Long" resultMap="BaseResultMap">
	 select u_id, u_name, u_salary from t_user;
</select>

二、ORM(Object Relational Mapping) 對象映射關係

1、ORM技術:為了解決面向對象與關係資料庫存在的互相不匹配的問題。 [主要是:對象的屬性名和表的列名不匹配的問題]


2、ORM思想:

面向對象概念----(映射配置)-----面向關係概念

​ 類 ------------------------------------- 表

對象 -------------------------------- 表的行(記錄)

屬性 -------------------------------- 表的列(欄位)


3、映射規則:使用註解/xml:

❀ 屬性名和列名是不同的,將兩者對應起來需要使用還能某種規則【註解/xml】

  • 使用xml:

image


4、ORM 框架:

遵循ORM思想實現的技術,解決持久層(DAO)的問題[和資料庫連接,進行CRUD]。

■ 常見 ORM 框架:

  • JPA:本身是一種 ORM 規範,不是 ORM 框架。由各大 ORM 框架提供實現。
  • Hibernate:以前最流行的 ORM 框架。設計靈巧,性能優秀,文檔豐富。
  • MyBatis: 目前最受歡迎的持久層解決方案。