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

MyBatis異常java.sql.SQLSyntaxErrorException的問題解決

 更新時間:2023年08月17日 09:48:08   作者:sumAll  
使用mybatis插入數(shù)據(jù)時出現(xiàn)java.sql.SQLSyntaxErrorException異常,本文就來介紹一下MyBatis異常的問題解決,具有一定的參考價值,感興趣的可以了解一下

1.問題描述

pojo類:

@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String email;
    public User(String name, Integer age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }
}

Dao類:

@Mapper
public interface UserDao {
    void insertBatch(@Param("users") List<User> users);
}

Mapper文件:

<insert id="insertBatch" useGeneratedKeys="true" 
        keyProperty="id" parameterType="User">
    INSERT INTO user (`name`, age, email) values
    <foreach collection="users" item="item" separator="," >
        (#{item.name,jdbcType=VARCHAR}, #{item.age,jdbcType=INTEGER}, #{item.email,jdbcType=VARCHAR})
    </foreach>
</insert>

測試代碼:

@Test
public void test_insertBatch(){
    List<User> users = new ArrayList<User>(){{
        User user = new User("sumAll",22,"sumAll@163.com");
        User user2 = new User("sumAll2",20,"sumAll2@163.com");
    }};
    userDao.insertBatch(users);
    logger.info(users.toString());
}

執(zhí)行測試代碼后,報以下錯誤:

org.springframework.jdbc.BadSqlGrammarException:

Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

The error may exist in file [xxx]

The error may involve com.sumAll.dao.UserDao.insertBatch-Inline

The error occurred while setting parameters

SQL: INSERT INTO user (name, age, email) values

大伙兒,發(fā)現(xiàn)哪里的問題導(dǎo)致了這個異常嗎?

2.問題分析

觀察測試代碼發(fā)現(xiàn),實例化的 user 并未添加進(jìn)入 List 容器,導(dǎo)致 List 容器為空。

異常.png

由于 List 為空, 最終生成的 SQL 語句變?yōu)?INSERT INTO user (name, age, email) values ,這就產(chǎn)生了 SQL 語法錯誤異常。

異常2.png

因此在使用批量插入語句之前,應(yīng)當(dāng)對集合進(jìn)行判空處理。修改后的測試代碼如下:

@Test
public void test_insertBatch(){
    List<User> users = new ArrayList<User>(){{
        User user = new User("sumAll",22,"sumAll@163.com");
        User user2 = new User("sumAll2",20,"sumAll2@163.com");
        add(user);
        add(user2);
    }};
    if(!users.isEmpty()){
        userDao.insertBatch(users);
        logger.info(users.toString());
    }
}

執(zhí)行結(jié)果如下:

結(jié)果.png

到此這篇關(guān)于MyBatis異常java.sql.SQLSyntaxErrorException的問題解決的文章就介紹到這了,更多相關(guān)MyBatis java.sql.SQLSyntaxErrorException內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基本語法小白入門級

    Java基本語法小白入門級

    Java基本語法就是指java中的規(guī)則,也是一種語言規(guī)則,規(guī)范,同時也能讓您在后面的學(xué)習(xí)中避免不必要的一些錯誤和麻煩,是您學(xué)好java必修的第一門課程
    2023-05-05
  • SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況

    SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況

    這篇文章主要介紹了SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 利用Spring JPA中的@Version注解實現(xiàn)樂觀鎖

    利用Spring JPA中的@Version注解實現(xiàn)樂觀鎖

    樂觀鎖是數(shù)據(jù)庫和應(yīng)用程序中使用的一種并發(fā)控制策略,用于在多個事務(wù)嘗試更新單個記錄時確保數(shù)據(jù)完整性,Java Persistence API (JPA) 提供了一種借助@Version注解在 Java 應(yīng)用程序中實現(xiàn)樂觀鎖的機(jī)制,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • java編程題之合并兩個排序的鏈表

    java編程題之合并兩個排序的鏈表

    這篇文章主要為大家詳細(xì)介紹了java編程題之合并兩個排序的鏈表,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Java中的break和continue關(guān)鍵字的使用方法總結(jié)

    Java中的break和continue關(guān)鍵字的使用方法總結(jié)

    下面小編就為大家?guī)硪黄狫ava中的break和continue關(guān)鍵字的使用方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 一文詳解Java的餓漢和懶漢設(shè)計模式

    一文詳解Java的餓漢和懶漢設(shè)計模式

    這篇文章主要為大家詳細(xì)介紹了Java設(shè)計模式中的的餓漢模式和懶漢模式,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-12-12
  • java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能

    java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能

    本篇文章主要介紹了java 使用ElasticSearch完成百萬級數(shù)據(jù)查詢附近的人功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • SpringBoot中Mockito單元測試入門

    SpringBoot中Mockito單元測試入門

    單元測試在很多地方都用的到,本文主要介紹了SpringBoot中Mockito單元測試入門,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Mybatis源碼解析之初始化分析

    Mybatis源碼解析之初始化分析

    這篇文章主要介紹了Mybatis源碼解析之初始化分析,Mybatis的初始化過程就是mybatis配置文件的解析過程并將解析結(jié)果保存到Configuration類。,需要的朋友可以參考下
    2024-01-01
  • jeefast和Mybatis實現(xiàn)三級聯(lián)動的示例代碼

    jeefast和Mybatis實現(xiàn)三級聯(lián)動的示例代碼

    這篇文章主要介紹了jeefast和Mybatis實現(xiàn)三級聯(lián)動的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10

最新評論