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

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

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

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í)行測試代碼后,報(bào)以下錯(cuò)誤:

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)致了這個(gè)異常嗎?

2.問題分析

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

異常.png

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

異常2.png

因此在使用批量插入語句之前,應(yīng)當(dāng)對(duì)集合進(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之二手書商城系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之二手書商城系統(tǒng)的實(shí)現(xiàn)

    這是一個(gè)使用了java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP開發(fā)的二手書商城系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有在線書城該有的所有功能,感興趣的朋友快來看看吧
    2022-01-01
  • 解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無法加載主類的問題

    解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無法加載主類的問題

    這篇文章主要介紹了解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無法加載主類的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java項(xiàng)目啟動(dòng)失敗的問題及解決

    java項(xiàng)目啟動(dòng)失敗的問題及解決

    這篇文章主要介紹了java項(xiàng)目啟動(dòng)失敗的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • ConcurrentHashMap是如何保證線程安全

    ConcurrentHashMap是如何保證線程安全

    大家好,本篇文章主要講的是ConcurrentHashMap是如何保證線程安全,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Java中常用的數(shù)據(jù)庫連接池_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中常用的數(shù)據(jù)庫連接池_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個(gè);釋放空閑時(shí)間超過最大空閑時(shí)間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏
    2017-08-08
  • java并發(fā)編程工具類PriorityBlockingQueue優(yōu)先級(jí)隊(duì)列

    java并發(fā)編程工具類PriorityBlockingQueue優(yōu)先級(jí)隊(duì)列

    這篇文章主要為大家介紹了java并發(fā)編程工具類PriorityBlockingQueue優(yōu)先級(jí)隊(duì)列的方法示例應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • SpringBoot整合H2數(shù)據(jù)庫的操作方法

    SpringBoot整合H2數(shù)據(jù)庫的操作方法

    H2是一個(gè)Java語言編寫的嵌入式數(shù)據(jù)庫,它不受平臺(tái)的限制,同時(shí)H2提供了一個(gè)十分方便的web控制臺(tái),用于操作和管理數(shù)據(jù)庫內(nèi)容,本文介紹SpringBoot整合H2數(shù)據(jù)庫的方法,感興趣的朋友一起看看吧
    2024-01-01
  • Java8 中使用Stream 讓List 轉(zhuǎn) Map使用問題小結(jié)

    Java8 中使用Stream 讓List 轉(zhuǎn) Map使用問題小結(jié)

    這篇文章主要介紹了Java8 中使用Stream 讓List 轉(zhuǎn) Map使用總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-06-06
  • Spring Boot詳細(xì)打印啟動(dòng)時(shí)異常堆棧信息詳析

    Spring Boot詳細(xì)打印啟動(dòng)時(shí)異常堆棧信息詳析

    這篇文章主要給大家介紹了關(guān)于Spring Boot詳細(xì)打印啟動(dòng)時(shí)異常堆棧信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Java字符串無意識(shí)的遞歸過程解析

    Java字符串無意識(shí)的遞歸過程解析

    這篇文章主要介紹了Java字符串無意識(shí)的遞歸過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論

尼玛县| 屯昌县| 科技| 紫阳县| 方正县| 彩票| 屏边| 黑水县| 楚雄市| 松滋市| 彩票| 东海县| 紫云| 鄄城县| 沙湾县| 北辰区| 廊坊市| 平顶山市| 乐陵市| 葫芦岛市| 铁岭市| 莱阳市| 蓝田县| 黑河市| 庐江县| 天全县| 梁平县| 庆城县| 潼关县| 北川| 托克逊县| 石渠县| 临泉县| 靖宇县| 财经| 广河县| 灵石县| 乌拉特中旗| 明溪县| 大英县| 菏泽市|