MyBatis異常java.sql.SQLSyntaxErrorException的問(wèn)題解決
1.問(wèn)題描述
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>測(cè)試代碼:
@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í)行測(cè)試代碼后,報(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)哪里的問(wèn)題導(dǎo)致了這個(gè)異常嗎?
2.問(wèn)題分析
觀察測(cè)試代碼發(fā)現(xiàn),實(shí)例化的 user 并未添加進(jìn)入 List 容器,導(dǎo)致 List 容器為空。

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

因此在使用批量插入語(yǔ)句之前,應(yīng)當(dāng)對(duì)集合進(jìn)行判空處理。修改后的測(cè)試代碼如下:
@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é)果如下:

到此這篇關(guān)于MyBatis異常java.sql.SQLSyntaxErrorException的問(wèn)題解決的文章就介紹到這了,更多相關(guān)MyBatis java.sql.SQLSyntaxErrorException內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MybatisPlus出現(xiàn)Error attempting to get column ‘xxx字段‘ from result set異常解決
- Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?column?'XXX'?in?'field?list'的問(wèn)題解決
- MybatisPlusException:Failed?to?process,Error?SQL異常報(bào)錯(cuò)的解決辦法
- Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError
- MybatisPlus BaseMapper 中的方法全部 Invalid bound statement (not found Error處理)
- 解決Mybatis出現(xiàn)報(bào)錯(cuò)Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of
相關(guān)文章
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之二手書商城系統(tǒng)的實(shí)現(xiàn)
這是一個(gè)使用了java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP開(kāi)發(fā)的二手書商城系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有在線書城該有的所有功能,感興趣的朋友快來(lái)看看吧2022-01-01
解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無(wú)法加載主類的問(wèn)題
這篇文章主要介紹了解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無(wú)法加載主類的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
java項(xiàng)目啟動(dòng)失敗的問(wèn)題及解決
這篇文章主要介紹了java項(xiàng)目啟動(dòng)失敗的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Java中常用的數(shù)據(jù)庫(kù)連接池_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而不是再重新建立一個(gè);釋放空閑時(shí)間超過(guò)最大空閑時(shí)間的數(shù)據(jù)庫(kù)連接來(lái)避免因?yàn)闆](méi)有釋放數(shù)據(jù)庫(kù)連接而引起的數(shù)據(jù)庫(kù)連接遺漏2017-08-08
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ù)庫(kù)的操作方法
H2是一個(gè)Java語(yǔ)言編寫的嵌入式數(shù)據(jù)庫(kù),它不受平臺(tái)的限制,同時(shí)H2提供了一個(gè)十分方便的web控制臺(tái),用于操作和管理數(shù)據(jù)庫(kù)內(nèi)容,本文介紹SpringBoot整合H2數(shù)據(jù)庫(kù)的方法,感興趣的朋友一起看看吧2024-01-01
Java8 中使用Stream 讓List 轉(zhuǎn) Map使用問(wèn)題小結(jié)
這篇文章主要介紹了Java8 中使用Stream 讓List 轉(zhuǎn) Map使用總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-06-06
Spring Boot詳細(xì)打印啟動(dòng)時(shí)異常堆棧信息詳析
這篇文章主要給大家介紹了關(guān)于Spring Boot詳細(xì)打印啟動(dòng)時(shí)異常堆棧信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Java字符串無(wú)意識(shí)的遞歸過(guò)程解析
這篇文章主要介紹了Java字符串無(wú)意識(shí)的遞歸過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09

