最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis中常見的SQL執(zhí)行方式及其使用方法

 更新時間:2023年09月28日 11:00:32   作者:stormjun  
MyBatis可能很多人都一直在用,但是MyBatis的SQL執(zhí)行流程可能并不是所有人都清楚了,下面這篇文章主要給大家介紹了關于MyBatis中常見的SQL執(zhí)行方式及其使用的相關資料,需要的朋友可以參考下

引言

MyBatis 是一個基于 Java 的持久層框架,它提供了多種方式來執(zhí)行 SQL 語句,包括直接使用 SqlSession 執(zhí)行、使用映射器(Mapper)執(zhí)行、使用 SqlSessionTemplate 執(zhí)行等。本文將介紹 MyBatis 中常見的 SQL 執(zhí)行方式及其使用方法。

1. 直接使用 SqlSession 執(zhí)行 SQL 語句

在 MyBatis 中,可以通過 SqlSession 對象直接執(zhí)行 SQL 語句。SqlSession 是 MyBatis 的核心類之一,它負責與數(shù)據(jù)庫進行交互和管理事務。SqlSession 提供了多個方法來執(zhí)行 SQL 語句,比如 selectOne、selectList、insert、update 和 delete 等。下面是一個簡單的示例:

public class MyBatisTest {
    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            // 執(zhí)行查詢語句
            User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1);
            System.out.println(user);
            // 執(zhí)行插入語句
            User newUser = new User();
            newUser.setName("Tom");
            newUser.setAge(20);
            int result = sqlSession.insert("com.example.mapper.UserMapper.addUser", newUser);
            System.out.println(result);
            sqlSession.commit();
        } finally {
            sqlSession.close();
        }
    }
}

在上面的示例代碼中,首先讀取了配置文件 mybatis-config.xml,然后通過 SqlSessionFactoryBuilder 將配置文件解析為 SqlSessionFactory 對象,最后通過 SqlSessionFactory 創(chuàng)建 SqlSession 對象。在 SqlSession 中,可以通過 selectOne、selectList、insert、update 和 delete 等方法執(zhí)行 SQL 語句。其中,selectOne 方法用于查詢單個結(jié)果,selectList 方法用于查詢多個結(jié)果,insert、update 和 delete 方法用于執(zhí)行更新或刪除操作。這些方法的第一個參數(shù)為 SQL 語句的 ID,格式為 “namespace.statementId”,其中 namespace 為映射器的命名空間,statementId 為 SQL 語句的 ID。

2. 使用映射器(Mapper)執(zhí)行 SQL 語句

除了直接使用 SqlSession 執(zhí)行 SQL 語句外,還可以通過映射器(Mapper)執(zhí)行 SQL 語句。映射器是 MyBatis 中用于定義 SQL 語句和 Java 對象之間映射關系的接口,它可以通過 XML 或注解的方式進行定義。下面是一個簡單的映射器示例:

public interface UserMapper {
    // 查詢用戶信息
    User getUserById(int id);
    // 添加用戶信息
    int addUser(User user);
}

在上面的示例代碼中,定義了一個名為 UserMapper 的映射器接口,其中包含了兩個方法:getUserById 和 addUser。這兩個方法的實現(xiàn)方式與直接使用 SqlSession 執(zhí)行 SQL 語句的方式類似,只不過將 SQL 語句和參數(shù)映射的工作放在了映射器接口中。下面是一個使用映射器執(zhí)行 SQL 語句的示例:

public class MyBatisTest {
    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            // 執(zhí)行查詢語句
            User user = userMapper.getUserById(1);
            System.out.println(user);
            // 執(zhí)行插入語句
            User newUser = new User();
            newUser.setName("Tom");
            newUser.setAge(20);
            int result = userMapper.addUser(newUser);
            System.out.println(result);
            sqlSession.commit();
        } finally {
            sqlSession.close();
        }
    }
}

在上面的示例代碼中,首先讀取了配置文件 mybatis-config.xml,然后通過 SqlSessionFactoryBuilder 將配置文件解析為SqlSessionFactory 對象,最后通過 SqlSessionFactory 創(chuàng)建 SqlSession 對象。在 SqlSession 中,通過 getMapper 方法獲取映射器接口的實例,然后就可以直接調(diào)用映射器接口中的方法執(zhí)行 SQL 語句了。

3. 使用 SqlSessionTemplate 執(zhí)行 SQL 語句

除了直接使用 SqlSession 和映射器執(zhí)行 SQL 語句外,還可以使用 SqlSessionTemplate 執(zhí)行 SQL 語句。SqlSessionTemplate 是 MyBatis-Spring 模塊提供的一個類,它封裝了 SqlSession 的常用操作,可以方便地在 Spring 框架中使用。下面是一個簡單的示例:

public class UserServiceImpl implements UserService {
    private SqlSessionTemplate sqlSessionTemplate;
    public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
        this.sqlSessionTemplate = sqlSessionTemplate;
    }
    @Override
    public User getUserById(int id) {
        return sqlSessionTemplate.selectOne("com.example.mapper.UserMapper.getUserById", id);
    }
    @Override
    public int addUser(User user) {
        return sqlSessionTemplate.insert("com.example.mapper.UserMapper.addUser", user);
    }
}

在上面的示例代碼中,通過注入 SqlSessionTemplate 對象來執(zhí)行 SQL 語句。SqlSessionTemplate 提供了多個方法來執(zhí)行 SQL 語句,包括 selectOne、selectList、insert、update 和 delete 等。這些方法的使用方式與直接使用 SqlSession 執(zhí)行 SQL 語句的方式類似。

4. SQL 語句的參數(shù)映射

在執(zhí)行 SQL 語句時,需要將 SQL 語句中的參數(shù)映射到 Java 對象中。MyBatis 提供了多種方式來實現(xiàn)參數(shù)映射,包括基本類型參數(shù)、JavaBean 參數(shù)、Map 參數(shù)和注解參數(shù)等。下面是一個簡單的示例:

public interface UserMapper {
    // 查詢用戶信息
    User getUserById(int id);
    // 添加用戶信息
    int addUser(User user);
    // 查詢用戶信息,使用 Map 參數(shù)
    User getUserByIdMap(Map<String, Object> paramMap);
    // 添加用戶信息,使用注解參數(shù)
    @Insert("insert into user(name, age) values(#{user.name}, #{user.age})")
    int addUserAnnotation(@Param("user") User user);
}

在上面的示例代碼中,getUserById 和 addUser 方法使用了 JavaBean 參數(shù),getUserByIdMap 方法使用了 Map 參數(shù),addUserAnnotation 方法使用了注解參數(shù)。在使用 JavaBean 參數(shù)和 Map 參數(shù)時,需要將 SQL 語句中的參數(shù)與 Java 對象的屬性進行映射。在使用注解參數(shù)時,需要在 SQL 語句中使用 #{paramName} 的方式,其中 paramName 為注解參數(shù)的名稱。

5. SQL 語句的返回結(jié)果映射

在執(zhí)行 SQL 語句時,需要將 SQL 語句中的返回結(jié)果映射到 Java 對象中。MyBatis 提供了多種方式來實現(xiàn)返回結(jié)果映射,包括基本類型返回、JavaBean 返回、Map 返回和注解返回等。下面是一個簡單的示例:

public interface UserMapper {
    // 查詢用戶信息,返回 JavaBean
    User getUserById(int id);
    // 查詢用戶信息,返回 Map
    Map<String, Object> getUserByIdMap(int id);
    // 查詢用戶信息,使用注解返回
    @Select("select name, age from user where id=#{id}")
    @Results({
            @Result(property = "name", column = "name"),
            @Result(property = "age", column = "age")
    })
    User getUserByIdAnnotation(int id);
}

在上面的示例代碼中,getUserById 方法返回了一個 JavaBean,getUserByIdMap 方法返回了一個 Map,getUserByIdAnnotation 方法使用了注解返回。在使用注解返回時,需要在 SQL 語句中使用 @Results 和 @Result 注解將查詢結(jié)果與 JavaBean 的屬性進行映射。

6. 總結(jié)

MyBatis 提供了多種方式來執(zhí)行 SQL 語句,包括直接使用 SqlSession 執(zhí)行、使用映射器執(zhí)行、使用 SqlSessionTemplate 執(zhí)行等。在執(zhí)行 SQL 語句時,需要將 SQL 語句中的參數(shù)和返回結(jié)果

到此這篇關于MyBatis中常見的SQL執(zhí)行方式及其使用方法的文章就介紹到這了,更多相關MyBatis執(zhí)行SQL語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JSR-107緩存規(guī)范介紹

    JSR-107緩存規(guī)范介紹

    JSR是Java Specification Requests的縮寫,意思是Java規(guī)范提案,下面給大家介紹JSR-107緩存規(guī)范的相關知識,感興趣的朋友一起看看吧
    2025-05-05
  • JAVA大作業(yè)之圖書管理系統(tǒng)實現(xiàn)全解

    JAVA大作業(yè)之圖書管理系統(tǒng)實現(xiàn)全解

    隨著網(wǎng)絡技術的高速發(fā)展,計算機應用的普及,利用計算機對圖書館的日常工作進行管理勢在必行,本篇文章手把手帶你用Java實現(xiàn)一個圖書管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2022-01-01
  • Spring Aware源碼設計示例解析

    Spring Aware源碼設計示例解析

    這篇文章主要為大家介紹了Spring Aware源碼設計示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • mybatis插入后返回主鍵id的3種方式圖解

    mybatis插入后返回主鍵id的3種方式圖解

    這篇文章主要給大家介紹了關于mybatis插入后返回主鍵id的3種方式,很多時候,在向數(shù)據(jù)庫插入數(shù)據(jù)時,需要保留插入數(shù)據(jù)的,以便進行后續(xù)的操作或者將存入其他表作為外鍵,需要的朋友可以參考下
    2023-08-08
  • Java 異常處理小結(jié),從入門到精通

    Java 異常處理小結(jié),從入門到精通

    這篇文章主要介紹了Java 異常處理小結(jié),從入門到精通,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • java實現(xiàn)身份證號碼驗證的示例代碼

    java實現(xiàn)身份證號碼驗證的示例代碼

    這篇文章主要為大家詳細介紹了如何利用java語言實現(xiàn)身份證號碼驗證的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-09-09
  • Mybatis Mybatis-Plus傳入多個參數(shù)的處理方式

    Mybatis Mybatis-Plus傳入多個參數(shù)的處理方式

    這篇文章主要介紹了Mybatis Mybatis-Plus傳入多個參數(shù)的處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 學習Java之如何正確地跳出循環(huán)結(jié)構

    學習Java之如何正確地跳出循環(huán)結(jié)構

    我們在利用循環(huán)執(zhí)行重復操作的過程中,存在著一個需求:如何中止,或者說提前結(jié)束一個循環(huán),所以就給大家講解一下,如何在java代碼中返回一個結(jié)果,如何結(jié)束和跳出一個循環(huán),需要的朋友可以參考下
    2023-05-05
  • Java數(shù)據(jù)結(jié)構之線性表

    Java數(shù)據(jù)結(jié)構之線性表

    線性表是其組成元素間具有線性關系的一種數(shù)據(jù)結(jié)構,對線性表的基本操作主要有,獲取元素,設置元素值,遍歷,插入,刪除,查找,替換,排序等。而線性表可以采用順序儲存結(jié)構和鏈式儲存結(jié)構,本節(jié)主要講解順序表、單鏈表以及雙鏈表的各種基本操作。
    2017-03-03
  • 關于Java HashMap自動排序的簡單剖析

    關于Java HashMap自動排序的簡單剖析

    這篇文章主要給大家介紹了關于Java HashMap自動排序的簡單剖析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09

最新評論

武川县| 清远市| 邢台市| 怀化市| 江城| 交口县| 河东区| 潮州市| 拉萨市| 衡南县| 广西| 栾川县| 五华县| 武乡县| 马鞍山市| 丹阳市| 泸州市| 云安县| 筠连县| 玉屏| 渭南市| 五大连池市| 闻喜县| 秦安县| 桃源县| 乳源| 赤峰市| 定边县| 淮南市| 万源市| 望谟县| 赤峰市| 瓦房店市| 临沭县| 丰都县| 青海省| 盐边县| 东莞市| 汝阳县| 怀柔区| 淅川县|