欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談MyBatis執(zhí)行SQL的兩種方式

 更新時間:2021年08月02日 10:06:54   作者:花傷情猶在  
本文介紹MyBatis執(zhí)行SQL語句的2種方式,主要是SqlSession和Mapper接口以及它們的區(qū)別,具有一定的參考價值,感興趣的可以了解一下

前言

本文介紹MyBatis執(zhí)行SQL語句的2種方式:SqlSession和Mapper接口以及它們的區(qū)別。

準備接口和Mapper配置文件:

定義UserMapper接口:

package cn.cvs.dao;

import cn.cvs.pojo.User;

import java.util.List;

public interface UserMapper {
    //查找所有的用戶信息
    public List<User> findAll();
    //查詢用戶的數(shù)量
    public int selectCount();
}

定義UserMapper配置文件:

<?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="cn.cvs.dao.UserMapper">
<!--    查找所有的用戶信息-->
    <select id="findAll" resultType="cn.cvs.pojo.User">
        SELECT * FROM t_sys_user
    </select>
<!--    查詢用戶的數(shù)量-->
    <select id="selectCount" resultType="int">
        SELECT count(1) FROM t_sys_user
    </select>
</mapper>

指定sqlMapConfig其mapper文件的位置:

在sqlMapConfig.xml文件里面添加<mappers>成對標簽,然后里加上成對的mapper標簽,使用mapper的resource屬性指定mapper文件的路徑,這個路徑是從target/classes路徑開啟的。

使用注意:
resource=“mapper文件的路徑,使用 / 分割路徑”,記住不是"."
一個mapper resource 指定一個mapper文件

代碼模板:

<mappers>
	<mapper resource="mapper文件的路徑"/>
</mappers>

使用SqlSession 發(fā)送 SQL

指定要執(zhí)行的sql語句的 id:

sql的id = namespace+"."+ select|update|insert|delete標簽的id屬性值

例如:
namespace為cn.cvs.dao.UserMapper指定id為selectCount的sql語句

格式:命名空間(namespace)+點(.)+id屬性值(id)
格式:cn.cvs.dao.UserMapper.selectCount

在這里插入圖片描述

這樣 MyBatis 就會找到對應的 SQL

通過SqlSession的方法,執(zhí)行sql語句

List<User> list = sqlSession.selectList("cn.cvs.dao.UserMapper.findAll");

selectList 方法表示使用查詢并且只返回一個List集合

如果在 MyBatis 中只有一個 id 為 selectCount 的 SQL,那么也可以簡寫為:

List<User> list = sqlSession.selectList("selectCount");

這是 MyBatis 前身 iBatis 所留下的方式。

使用 Mapper 接口發(fā)送 SQL

用 Mapper 接口發(fā)送SQL就是以動態(tài)代理的方式sqlsession.getMapper(dao.class)獲取dao接口對象,執(zhí)行對應方法即可。這樣做不用我們再去寫dao接口的實現(xiàn)類就可以直接執(zhí)行對應sql語句,其實就是MyBatis以代理的方式幫我們創(chuàng)建了接口的實現(xiàn)類。

Mapper規(guī)范:namespace要寫dao接口的全限定名稱,標簽id要寫接口方法名

在這里插入圖片描述

通過 SqlSession 獲取 Mapper 接口,通過 Mapper 接口發(fā)送 SQL :

UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> list2=mapper.findAll();

通過 SqlSession 的 getMapper 方法來獲取一個 Mapper 接口,就可以調(diào)用它的方法了。因為 XML文件或者接口注解定義的 SQL 都可以通過“類的全限定名+方法名”查找,所以 MyBatis 會啟用對應的 SQL 進行運行,并返回結(jié)果。

比較兩種發(fā)送 SQL 方式

用 SqlSession 接口發(fā)送 SQL :
無需定義dao接口,直接通過"命名空間+id"調(diào)用對應的SQL
List list = sqlSession.selectList(“cn.cvs.dao.UserMapper.findAll”);

用 Mapper 接口發(fā)送 SQL :
通過 SqlSession 獲取 Mapper 接口
格式:接口類名 對象名 = sqlSession.getMapper(接口類名.class);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
調(diào)用對應的SQL
List list2=mapper.findAll();

建議采用 SqlSession 獲取 Mapper 接口的方式:

使用 Mapper 接口編程可以消除 SqlSession 帶來的功能性代碼,提高可讀性,而 SqlSession 發(fā)送 SQL,需要一個> SQL id 去匹配 SQL,比較晦澀難懂。

到此這篇關(guān)于淺談MyBatis執(zhí)行SQL的兩種方式的文章就介紹到這了,更多相關(guān)MyBatis執(zhí)行SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot項目部署到騰訊云的實現(xiàn)步驟

    SpringBoot項目部署到騰訊云的實現(xiàn)步驟

    本文主要介紹了SpringBoot項目部署到騰訊云的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java實現(xiàn)的計算最大下標距離算法示例

    Java實現(xiàn)的計算最大下標距離算法示例

    這篇文章主要介紹了Java實現(xiàn)的計算最大下標距離算法,涉及java針對數(shù)組的遍歷、運算等相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • IDEA如何修改配置文件的存放位置

    IDEA如何修改配置文件的存放位置

    這篇文章主要介紹了IDEA如何修改配置文件的存放位置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java?NIO?通道概念選擇器使用示例詳解

    Java?NIO?通道概念選擇器使用示例詳解

    這篇文章主要為大家介紹了Java?NIO?通道概念選擇器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之隊列

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之隊列

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之隊列,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java輸入輸出語句舉例詳解(通俗易懂!)

    Java輸入輸出語句舉例詳解(通俗易懂!)

    這篇文章主要給大家介紹了關(guān)于Java輸入輸出語句的相關(guān)資料,作為一種常用的編程語言,Java提供了多種輸入輸出的方式,用于與用戶進行數(shù)據(jù)交互或處理文件數(shù)據(jù),需要的朋友可以參考下
    2023-10-10
  • SpringBoot中使用異步調(diào)度程序的高級方法

    SpringBoot中使用異步調(diào)度程序的高級方法

    本文主要介紹了SpringBoot中使用異步調(diào)度程序的高級方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • Java單例模式的知識點詳解

    Java單例模式的知識點詳解

    在本篇文章里小編給大家整理的是關(guān)于Java單例模式的知識點詳解,有興趣的朋友們可以學習參考下。
    2020-02-02
  • spring?webClient配置及使用簡單代碼示例

    spring?webClient配置及使用簡單代碼示例

    WebClient是Spring框架5.0引入的基于響應式編程模型的HTTP客戶端,它提供一種簡便的方式來處理HTTP請求和響應,支持異步和非阻塞式的請求和響應處理,下面這篇文章主要給大家介紹了關(guān)于spring?webClient配置及使用的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Java concurrency之共享鎖和ReentrantReadWriteLock_動力節(jié)點Java學院整理

    Java concurrency之共享鎖和ReentrantReadWriteLock_動力節(jié)點Java學院整理

    本篇文章主要介紹了Java concurrency之共享鎖和ReentrantReadWriteLock,非常具有實用價值,需要的朋友可以參考下
    2017-06-06

最新評論