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

MyBatis異常java.sql.SQLSyntaxErrorException的問(wèn)題解決

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

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 容器為空。

異常.png

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

異常2.png

因此在使用批量插入語(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é)果如下:

結(jié)果.png

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

相關(guān)文章

最新評(píng)論

榆林市| 怀安县| 区。| 昌都县| 同心县| 海原县| 上林县| 类乌齐县| 德令哈市| 湘阴县| 静宁县| 靖边县| 辉县市| 布尔津县| 禹州市| 凤台县| 沽源县| 平乐县| 岱山县| 介休市| 灵宝市| 莒南县| 安吉县| 大渡口区| 沈阳市| 依安县| 琼海市| 苏尼特右旗| 布尔津县| 南昌县| 农安县| 拜泉县| 陕西省| 屯昌县| 中牟县| 铜川市| 同德县| 上蔡县| 大庆市| 武冈市| 时尚|