MyBatis執(zhí)行SQL的兩種方式小結(jié)
MyBatis 有兩種執(zhí)行 SQL 語句的方式,如下:
- 通過 SqlSession 發(fā)送 SQL
- 通過 SqlSession 獲取 Mapper 接口,通過 Mapper 接口發(fā)送 SQL
SqlSession發(fā)送SQL
有映射器之后就可以通過 SqlSession 發(fā)送 SQL 了。我們以 getWebsite 這條 SQL 為例看看如何發(fā)送 SQL。
Website website = (Website)sqlSession.selectOne("net.biancheng.mapper.WebsiteMapper.getWebsite",1);MyBatis 常用的查詢方法有 2 種,分別為 selectOne 和 selectList。
1)selectOne
selectOne 方法表示使用查詢并且只返回一個對象,必須指定查詢條件。只能查詢 0 或 1 條記錄,大于 1 條記錄則運行錯誤。常用格式如下(也有其它重載方法,根據(jù)需要選擇)。
sqlSession.selectOne(String arg0, Object arg1)
2)selectList
selectList 方法表示使用查詢并且返回一個列表??梢圆樵?0 或 N 條記錄。常用格式如下。
sqlSession.selectOne(String arg0)
也可指定參數(shù)
sqlSession.selectList(String arg0, Object arg1)
以上語法格式中,String 對象由一個命名空間加 SQL id 組合而成,它完全定位了一條 SQL,這樣 MyBatis 就會找到對應(yīng)的 SQL。Object 對象為需要傳遞的參數(shù),也就是查詢條件。
selectOne 實現(xiàn)的 selectList 都可以實現(xiàn),即 list 中只有一個對象。但 selectList 能實現(xiàn)的,selectOne 不一定能實現(xiàn)。
Mapper接口發(fā)送 SQL
SqlSession 還可以獲取 Mapper 接口,通過 Mapper 接口發(fā)送 SQL
WebsiteMapper websiteMapper = sqlSession.getMapper(WebsiteMapper.class); Website website = websiteMapper.getWebsite(1);
通過 SqlSession 的 getMapper 方法獲取一個 Mapper 接口,然后就可以調(diào)用它的方法了。因為 XML 文件或者接口注解定義的 SQL 都可以通過“類的全限定名+方法名”查找,所以 MyBatis 會啟用對應(yīng)的 SQL 運行,并返回結(jié)果。
區(qū)別
上面分別講解了 MyBatis 兩種發(fā)送 SQL 的方式,一種用 SqlSession 直接發(fā)送,另外一種通過 SqlSession 獲取 Mapper 接口再發(fā)送。筆者建議采用 Mapper 接口發(fā)送 SQL 的方式,理由如下:
- 使用 Mapper 接口編程可以消除 SqlSession 帶來的功能性代碼,提高可讀性,而 SqlSession 發(fā)送 SQL,需要一個 SQL id 去匹配 SQL,比較晦澀難懂。
- 使用 Mapper 接口,類似 websiteMapper.getWebsite(1) 則是完全面向?qū)ο蟮恼Z言,更能體現(xiàn)業(yè)務(wù)的邏輯。
- 使用 websiteMapper.getWebsite(1) 方式,IDE 會提示錯誤和校驗,而使用 sqlSession.selectOne("getWebsite",1L) 語法,只有在運行中才能知道是否會產(chǎn)生錯誤。
目前使用 Mapper 接口編程已成為主流,尤其在 Spring 中運用 MyBatis 時,Mapper 接口的使用就更為簡單
到此這篇關(guān)于MyBatis執(zhí)行SQL的兩種方式小結(jié)的文章就介紹到這了,更多相關(guān)MyBatis執(zhí)行SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Spring Boot中使用Spring-data-jpa實現(xiàn)分頁查詢
如何使用jpa進行多條件查詢以及查詢列表分頁呢?下面我將介紹兩種多條件查詢方式。具體實例代碼大家參考下本文吧2017-07-07
解決使用mybatis-plus時,生成的SQL大寫變小寫加下劃線問題
這篇文章主要介紹了解決使用mybatis-plus時,生成的SQL大寫變小寫加下劃線問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
java list與數(shù)組之間的轉(zhuǎn)換詳細解析
以下是對java中l(wèi)ist與數(shù)組之間的轉(zhuǎn)換進行了詳細的分析介紹,需要的朋友可以過來參考下2013-09-09

