亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis執(zhí)行錯(cuò)誤但sql執(zhí)行正常問(wèn)題

 更新時(shí)間:2024年01月27日 14:49:10   作者:Aoeding  
這篇文章主要介紹了mybatis執(zhí)行錯(cuò)誤但sql執(zhí)行正常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis執(zhí)行錯(cuò)誤但sql執(zhí)行正常

大概率是存在特殊字符使mybatis解析異常

1.在mapper.java中的方法上添加@SqlParser(filter=true)注解


在這里插入圖片描述

2.如果sql中有注釋,刪掉注釋


在這里插入圖片描述

mybatis執(zhí)行sql語(yǔ)句的兩種方式

SqlSession.mapper和SqlSession.selectXxx對(duì)比

MyBatis中有兩種SQL語(yǔ)句的執(zhí)行方式,如下:

  • 通過(guò)SqlSession發(fā)送SQL語(yǔ)句
  • 例如:sqlSession.slectone()的形式。
  • 通過(guò)SqlSession獲取Mapper接口,通過(guò)Mapper接口發(fā)送SQL語(yǔ)句
  • 例如:sqlSession.getMapper()的形式。

封裝工具類

封裝一個(gè)類SqlSession工具類,用于生產(chǎn)SqlSession對(duì)象,下面的例子為了節(jié)省代碼將會(huì)使用我們封裝的SqlSessionUtil工具類。

public class SqlSessionUtil {

    public static SqlSession getSqlSession(){
        SqlSession sqlSession = null;
        try {
            // 獲取核心配置文件的輸入流
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            // 獲取SqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            // 獲取SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            // 獲取SqlSession對(duì)象
            sqlSession = sqlSessionFactory.openSession(true);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return sqlSession;
    }
}

創(chuàng)建Mapper映射文件

<mapper namespace="com.jingchao.mybatis.mapper.UserMapper">
    <select id="selectUserById" resultType="User">
        select * from t_user where id = #{id}
    </select>
</mapper>

創(chuàng)建Mapper接口

public interface UserMapper{
    User selectUserById(@Param("id") Integer id);
}

SqlSession發(fā)送SQL語(yǔ)句

selectOne方法表示查詢一條語(yǔ)句,通過(guò)String類型的命名空間加上Sql語(yǔ)句標(biāo)簽的id來(lái)精準(zhǔn)定位一條SQL語(yǔ)句。

從而實(shí)現(xiàn)SQL語(yǔ)句的發(fā)送。

SqlSession sqlSession = SqlSessionUtil.getSqlSession();
User user = sqlSession.selectOne("com.jingchao.mybatis.mapper.UserMapper.selectUserById", 1);

Mapper接口發(fā)送SQL語(yǔ)句

通過(guò)Mapper接口發(fā)送SQL是通過(guò)動(dòng)態(tài)代理的方式(sqlSession.getMapper(UserMapper.class))獲取mapper接口對(duì)象,通過(guò)調(diào)用mapper中的方法,實(shí)現(xiàn)發(fā)送SQL語(yǔ)句,這樣完全避免了通過(guò)實(shí)現(xiàn)Mapper接口的方式來(lái)直接執(zhí)行對(duì)應(yīng)的SQL語(yǔ)句。

總結(jié):通過(guò)Mapper接口發(fā)送SQL語(yǔ)句的方式就是MyBatis以代理的方式幫我們創(chuàng)建了接口的實(shí)現(xiàn)類

SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);

兩種方式的對(duì)比

通過(guò)SqlSession發(fā)送SQL語(yǔ)句

不需要定義mapper(dao)接口,可以直接通過(guò)“ 命名空間 + id ”的方式發(fā)送SQL語(yǔ)句

通過(guò)SqlSession獲取Mapper接口,再通過(guò)Mapper接口發(fā)送SQL語(yǔ)句

需要定義mapper接口,并在接口中定義抽象方法,通過(guò)獲取mapper接口對(duì)象,再調(diào)用方法的形式發(fā)送SQL語(yǔ)句。

說(shuō)明:建議使用Mapper接口發(fā)送SQL語(yǔ)句的方式,理由如下:

  • 使用Mapper接口編程可以消除SqlSession帶來(lái)的功能性代碼,提高代碼可讀性
  • 使用Mapper接口,是完全體現(xiàn)面向?qū)ο蟮恼Z(yǔ)言,更加體現(xiàn)業(yè)務(wù)的邏輯
  • 使用Mapper接口的方式,可以提前進(jìn)行代碼的錯(cuò)誤提示和檢驗(yàn),而直接使用SqlSession的方式,只有在代碼運(yùn)行時(shí)才會(huì)知道是否產(chǎn)生錯(cuò)誤

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java struts2捕獲404錯(cuò)誤的方法匯總

    Java struts2捕獲404錯(cuò)誤的方法匯總

    這篇文章主要為大家詳細(xì)匯總了Java struts2捕獲404錯(cuò)誤的常用方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 10個(gè)Java文件操作必備技巧分享

    10個(gè)Java文件操作必備技巧分享

    在我們?nèi)粘5拈_(kāi)發(fā)中,文件操作是一個(gè)非常重要的主題。文件讀寫(xiě)、文件復(fù)制、任意位置讀寫(xiě)、緩存等技巧都是我們必須要掌握的。本文為大家整理了10個(gè)實(shí)用的文件操作技巧,希望對(duì)大家有所幫助
    2023-04-04
  • spring異步service中處理線程數(shù)限制詳解

    spring異步service中處理線程數(shù)限制詳解

    這篇文章主要給大家介紹了關(guān)于spring異步service中處理線程數(shù)限制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Hadoop2.8.1完全分布式環(huán)境搭建過(guò)程

    Hadoop2.8.1完全分布式環(huán)境搭建過(guò)程

    本文搭建了一個(gè)由三節(jié)點(diǎn)(master、slave1、slave2)構(gòu)成的Hadoop完全分布式集群(區(qū)別單節(jié)點(diǎn)偽分布式集群),并通過(guò)Hadoop分布式計(jì)算的一個(gè)示例測(cè)試集群的正確性。對(duì)hadoop分布式環(huán)境搭建過(guò)程感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • 利用JWT如何實(shí)現(xiàn)對(duì)API的授權(quán)訪問(wèn)詳解

    利用JWT如何實(shí)現(xiàn)對(duì)API的授權(quán)訪問(wèn)詳解

    這篇文章主要給大家介紹了關(guān)于利用JWT如何實(shí)現(xiàn)對(duì)API的授權(quán)訪問(wèn)的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • Response如何實(shí)現(xiàn)重定向

    Response如何實(shí)現(xiàn)重定向

    這篇文章主要介紹了Response如何實(shí)現(xiàn)重定向方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java的動(dòng)態(tài)代理和靜態(tài)代理詳解

    Java的動(dòng)態(tài)代理和靜態(tài)代理詳解

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • mybatis注解開(kāi)發(fā)使用foreach方式

    mybatis注解開(kāi)發(fā)使用foreach方式

    這篇文章主要介紹了mybatis注解開(kāi)發(fā)使用foreach方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java 異步實(shí)現(xiàn)的幾種方式小結(jié)

    Java 異步實(shí)現(xiàn)的幾種方式小結(jié)

    這篇文章主要介紹了Java 異步實(shí)現(xiàn)的幾種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 通過(guò)Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案

    通過(guò)Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案

    這篇文章主要介紹了通過(guò)Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論