聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

當前熱議!給查詢的字段起別名方式:resultMap自定義映射

來源:CSDN 時間:2023-03-29 08:49:34

目錄


(資料圖片)

準備

問題

方式一:給查詢的字段起別名

方式二:修改核心配置文件mybatis-config.xml

方式三:通過resultMap自定義映射

準備

我們的表的字段以及表數據如下

生成的實體類的屬性如下

public class Emp {    private Integer eid;    private String empName;    private Integer empAge;    private String empSex;    private String empEmail;}

問題

通過上面我們可以看到,實體類的屬性值與數據庫表的字段值并不是一樣的,這跟我們之前處理User類的時候是不一樣的,當時User類的屬性與其對應的數據表字段是一樣的。如果我們現在按照之前的思路來查找所有的Emp信息的話會出現什么問題呢?先看代碼。

測試代碼:  @Test    public void test1(){        SqlSession sqlSession= SqlSessionUtil.getSqlSession();        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);        Listemps = mapper.getAllEmp();        emps.forEach(emp -> System.out.println(emp));    }輸出結果:Emp(eid=1, empName=null, empAge=null, empSex=null, empEmail=null)Emp(eid=2, empName=null, empAge=null, empSex=null, empEmail=null)Emp(eid=3, empName=null, empAge=null, empSex=null, empEmail=null)Emp(eid=4, empName=null, empAge=null, empSex=null, empEmail=null)Emp(eid=5, empName=null, empAge=null, empSex=null, empEmail=null)

通過上面的測試結果,我們可以看到并不是所有的屬性都被賦值了。究其原因就是因為實體的屬性與其對應表的字段不一致。那么,如何解決這個問題呢,我們可以通過以下3三種方式。

方式一:給查詢的字段起別名

起的別名與實體類對應的屬性一致,在配置文件中可以這樣寫。對于名稱已經一樣的可以不用起別名,比如eid。

測試結果為

Emp(eid=1, empName=zhangsan, empAge=45, empSex=男, empEmail=bac@126.com)Emp(eid=2, empName=李四, empAge=55, empSex=男, empEmail=bac@126.com)Emp(eid=3, empName=王五, empAge=21, empSex=男, empEmail=bac@126.com)Emp(eid=4, empName=趙六, empAge=32, empSex=女, empEmail=bac@126.com)Emp(eid=5, empName=田七, empAge=33, empSex=女, empEmail=bac@126.com)

方式二:修改核心配置文件mybatis-config.xml

在核心配置文件中加入以下代碼

測試結果

Emp(eid=1, empName=zhangsan, empAge=45, empSex=男, empEmail=bac@126.com)Emp(eid=2, empName=李四, empAge=55, empSex=男, empEmail=bac@126.com)Emp(eid=3, empName=王五, empAge=21, empSex=男, empEmail=bac@126.com)Emp(eid=4, empName=趙六, empAge=32, empSex=女, empEmail=bac@126.com)Emp(eid=5, empName=田七, empAge=33, empSex=女, empEmail=bac@126.com)

方式三:通過resultMap自定義映射

結果

Emp(eid=1, empName=zhangsan, empAge=45, empSex=男, empEmail=bac@126.com)Emp(eid=2, empName=李四, empAge=55, empSex=男, empEmail=bac@126.com)Emp(eid=3, empName=王五, empAge=21, empSex=男, empEmail=bac@126.com)Emp(eid=4, empName=趙六, empAge=32, empSex=女, empEmail=bac@126.com)Emp(eid=5, empName=田七, empAge=33, empSex=女, empEmail=bac@126.com)

resultMap:設置自定義映射

屬性:

id:表示自定義映射的唯一標識,不能重復

type:查詢的數據要映射的實體類的類型

子標簽:

id:設置主鍵的映射關系

result:設置普通字段的映射關系

子標簽屬性:

property:設置映射關系中實體類中的屬性名

column:設置映射關系中表中的字段名

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线