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

MyBatis中執(zhí)行SQL語句的幾種方式總結(jié)

 更新時(shí)間:2024年04月24日 10:27:36   作者:stormjun  
MyBatis是一個(gè)優(yōu)秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射,下面這篇文章主要給大家介紹了關(guān)于MyBatis中執(zhí)行SQL語句的幾種方式,需要的朋友可以參考下

MyBatis 中如何執(zhí)行 SQL 語句

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

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

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

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 方法用于查詢單個(gè)結(jié)果,selectList 方法用于查詢多個(gè)結(jié)果,insert、update 和 delete 方法用于執(zhí)行更新或刪除操作。這些方法的第一個(gè)參數(shù)為 SQL 語句的 ID,格式為 “namespace.statementId”,其中 namespace 為映射器的命名空間,statementId 為 SQL 語句的 ID。

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

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

public interface UserMapper {
    // 查詢用戶信息
    User getUserById(int id);

    // 添加用戶信息
    int addUser(User user);
}

在上面的示例代碼中,定義了一個(gè)名為 UserMapper 的映射器接口,其中包含了兩個(gè)方法:getUserById 和 addUser。這兩個(gè)方法的實(shí)現(xiàn)方式與直接使用 SqlSession 執(zhí)行 SQL 語句的方式類似,只不過將 SQL 語句和參數(shù)映射的工作放在了映射器接口中。下面是一個(gè)使用映射器執(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 方法獲取映射器接口的實(shí)例,然后就可以直接調(diào)用映射器接口中的方法執(zhí)行 SQL 語句了。

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

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

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 提供了多個(gè)方法來執(zhí)行 SQL 語句,包括 selectOne、selectList、insert、update 和 delete 等。這些方法的使用方式與直接使用 SqlSession 執(zhí)行 SQL 語句的方式類似。

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

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

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ù)時(shí),需要將 SQL 語句中的參數(shù)與 Java 對象的屬性進(jìn)行映射。在使用注解參數(shù)時(shí),需要在 SQL 語句中使用 #{paramName} 的方式,其中 paramName 為注解參數(shù)的名稱。

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

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

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 方法返回了一個(gè) JavaBean,getUserByIdMap 方法返回了一個(gè) Map,getUserByIdAnnotation 方法使用了注解返回。在使用注解返回時(shí),需要在 SQL 語句中使用 @Results 和 @Result 注解將查詢結(jié)果與 JavaBean 的屬性進(jìn)行映射。

6. 總結(jié)

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

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

相關(guān)文章

  • Java的枚舉類型使用方法詳解

    Java的枚舉類型使用方法詳解

    這篇文章主要介紹了Java的枚舉類型使用方法詳解,從背景、到定義、特點(diǎn)、使用方式做個(gè)簡單了解,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 如何使用jenkins實(shí)現(xiàn)發(fā)布部分更新文件

    如何使用jenkins實(shí)現(xiàn)發(fā)布部分更新文件

    這篇文章主要介紹了如何使用jenkins實(shí)現(xiàn)發(fā)布部分更新文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java高效實(shí)現(xiàn)PPT轉(zhuǎn)PDF的示例詳解

    Java高效實(shí)現(xiàn)PPT轉(zhuǎn)PDF的示例詳解

    在日常工作中,我們常常需要將 PPT 或 PPTX 文件轉(zhuǎn)換為 PDF 格式,本文將介紹如何通過 Spire.Presentation for Java 庫,在不依賴 Office 的環(huán)境下,實(shí)現(xiàn) PPT/PPTX 轉(zhuǎn) PDF,希望對大家有所幫助
    2025-11-11
  • springboot實(shí)現(xiàn)獲取當(dāng)前服務(wù)器IP及當(dāng)前項(xiàng)目使用的端口號Port

    springboot實(shí)現(xiàn)獲取當(dāng)前服務(wù)器IP及當(dāng)前項(xiàng)目使用的端口號Port

    這篇文章主要介紹了springboot實(shí)現(xiàn)獲取當(dāng)前服務(wù)器IP及當(dāng)前項(xiàng)目使用的端口號Port方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • IDEA2023.3.4開啟SpringBoot項(xiàng)目的熱部署(圖文)

    IDEA2023.3.4開啟SpringBoot項(xiàng)目的熱部署(圖文)

    本文使用的開發(fā)工具是idea,使用的是springboot框架開發(fā)的項(xiàng)目,配置熱部署,可以提高開發(fā)效率,文中通過圖文介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • 11個(gè)值得借鑒的Java?return寫法分享

    11個(gè)值得借鑒的Java?return寫法分享

    return?這個(gè)關(guān)鍵字,相信大家每天都在用,它就像一把錘子,敲打著我們代碼里的每一個(gè)出口,但捫心自問,我們真的把這把錘子用好了嗎,下面小編就來和大家分享11個(gè)值得借鑒的Java?return寫法吧
    2025-04-04
  • Java 繼承和多態(tài)的作用及好處

    Java 繼承和多態(tài)的作用及好處

    文章講解Java繼承與多態(tài)的概念、語法及應(yīng)用,繼承通過extends復(fù)用父類成員,減少冗余;多態(tài)實(shí)現(xiàn)方法重寫與向上轉(zhuǎn)型,提升靈活性與代碼復(fù)用性,動態(tài)綁定降低圈復(fù)雜度,感興趣的朋友一起看看吧
    2025-06-06
  • 關(guān)于SpringBoot在有Ajax時(shí)候不跳轉(zhuǎn)的問題解決

    關(guān)于SpringBoot在有Ajax時(shí)候不跳轉(zhuǎn)的問題解決

    最近在使用Ajax來發(fā)送一些數(shù)據(jù)給后臺一個(gè)Controller,但是遇到些問題,所以下面這篇文章主要給大家介紹了關(guān)于SpringBoot在有Ajax時(shí)候不跳轉(zhuǎn)問題的解決辦法,需要的朋友可以參考下
    2022-05-05
  • Springboot如何正確使用AOP問題

    Springboot如何正確使用AOP問題

    這篇文章主要介紹了Springboot如何正確使用AOP問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無法啟動的問題

    解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無法啟動的問題

    這篇文章主要介紹了解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無法啟動的問題,本文重點(diǎn)給大家介紹Spring-Cloud-OpenFeign的原理及問題解決方法,需要的朋友可以參考下
    2021-10-10

最新評論

五河县| 庄河市| 舟山市| 张家口市| 宁远县| 湖南省| 灵武市| 曲水县| 定西市| 资兴市| 张北县| 宝清县| 香格里拉县| 隆回县| 曲阳县| 大同市| 保靖县| 潼南县| 嘉义县| 稷山县| 洞头县| 贡觉县| 屯昌县| 西昌市| 灵宝市| 宜春市| 瑞安市| 高密市| 通许县| 佛坪县| 尉犁县| 庆云县| 拜泉县| 五指山市| 开原市| 镶黄旗| 巴林右旗| 炉霍县| 晋州市| 渭源县| 台东市|