当前位置: 首页 > 知识库问答 >
问题:

如何解析org.springframework.jdbc.badsqlgrammareXception

沈伟
2023-03-14
package gulfnet.tts.inthanon.data.product.datadomain;

import java.time.ZonedDateTime;
import lombok.Data;


@Data
public class CommunityItemRecord{

    private String communityId; 
    private String itemId; 
    private ZonedDateTime publicStartDt; 
    private ZonedDateTime publicEndDt; 
    private ZonedDateTime handleEndDt; 
    private String makerCommunityId; 
    private Integer makerApprovalFlg; 
    private String makerApprovalUserId; 

    private ZonedDateTime insDttm; 
    private String insUserId; 
    private ZonedDateTime upDttm; 
    private String upUserId; 

}
<insert id="insertCommunityItemList" parameterType='list'>
        INSERT ALL
            <foreach collection="list" item="element" index="index">
                     INSERT INTO product.m_community_item (
                        community_id,
                        item_id,
                        public_start_dt,
                        public_end_dt,
                        handle_end_dt,
                        maker_community_id,
                        maker_approval_flg,
                        maker_approval_user_id,
                        ins_user_id,
                        up_user_id
                    ) VALUES (
                        #{element.communityId},
                        #{element.itemId},
                        #{element.publicStartDt},
                        #{element.publicEndDt},
                        #{element.handleEndDt},
                        #{element.makerCommunityId},
                        #{element.makerApprovalFlg},
                        #{element.makerApprovalUserId},
                        #{element.insUserId},
                        #{element.insUserId}
                    )
                on conflict on constraint m_community_item_pk
                do update set
                        public_start_dt = #{element.publicStartDt},
                        public_end_dt = #{element.publicEndDt},
                        up_dttm = current_timestamp,
                        up_user_id = #{element.insUserId}
            </foreach>  
    </insert>
public void insertCommunityItemList(java.util.ArrayList<CommunityItemRecord> communityItemRecordList);

exception=org.springframework.jdbc.badsqlgrammareXception:gulfnet.tts.inthanon.data.product.mapper.catalogmapper.insertCommunityItemlist(批索引#1)失败。原因:java.sql.BatchUpdateException:批条目0 INSERT ALL被中止。调用getNextException查看原因。;糟糕的SQL语法[];嵌套异常是org.PostgreSQL.util.psqlException:error:“all”位置或附近的语法错误:8

共有1个答案

廉展鹏
2023-03-14

您可以使用java迭代器迭代您的communityItemRecordList并一个接一个地插入数据库。

//java
communityItemRecordList.forEach(c -> {
    mapperInstance.insert(c);
});
//mapper xml
<insert id="insert">
    ....
</insert>

我认为在这个演示中使用动态SQL是不合适的。

我刚刚使用了foreach元素并测试成功。代码:

//java
@RunWith(SpringRunner.class)
@SpringBootTest
public class SmsContentDaoTest {

    @Autowired
    private SmsContentDao smsContentDao;

    @Test
    public void insertList() {
        List<SmsContentDO> list = new ArrayList<>();
        SmsContentDO item = SmsContentDO.builder().name("john").company("abc").job("farmer").build();
        list.add(item);
        item = SmsContentDO.builder().name("tom").company("nba").job("player").build();
        list.add(item);
        int rows = smsContentDao.insertList(list);
        System.out.println(rows);//2
    }
}
//mapper interface
int insertList(List<SmsContentDO> list);
//mapper xml, the dialect of mysql 
<!-- int insertList(List<SmsContentDO> list);-->
    <insert id="insertList">
        insert into
            sms_content (`name`,`company`,`job`)
        values
        <foreach collection="list" item="item" separator=",">
            (#{item.name},#{item.company},#{item.job})
        </foreach>
    </insert>
 类似资料:
  • 问题内容: 如何解析包含数据的XML 我们如何解析xml并获取包含在???中的数据? 问题答案: (http://www.java2s.com/Code/Java/XML/GetcharacterdataCDATAfromxmldocument.htm)

  • 问题内容: 我正在使用NewtonsoftJson库来解析json,但我不知道如何使用它。我使用JObject解析了字符串。当我在即时窗口中输出JObject实例的值时,我得到了:- 我应该怎么做才能获得这个工作的价值? 问题答案: 我个人更喜欢将JavaScriptSerializer与.NET环境中的JSON一起使用。默认情况下,它将返回Dictionary结果,但可用于解析到自定义对象(或者

  • 我正在尝试运行一个Java应用程序,但是得到了这个错误: 冒号后面是丢失的类的位置。但是,我知道那个位置不存在,因为类位于其他地方。如何更新该类的路径?和类路径有关系吗?

  • 当我尝试调试和部署我的android应用程序(在android Studio0.9中)时,我得到以下错误: 为了使事情清楚,这里有一个我的行动简史: null 从那时起,我就在将multiDex添加到我的项目中之后,不断地得到所描述的错误,方法如下:使用Gradle将外部库拆分到单独的dex文件中,以解决Android Dalvik 64K方法的限制。 这是我的build.gradle文件: 我还

  • 我很难理解如何解析javax.ws.rs.core.Response。有些人指出使用InputStream,但我不理解它是如何工作的,因为返回类型是响应。getEntity()的类型为Object。例如: NetBeans 抱怨说,我需要将 Object 类型转换为 InputStream。响应将由XML组成,我只是希望能够使用DOM解析它。我无法从javax.ws.rs.core.Respons

  • 我试图编写简单的java代码,在控制台上显示MongoDB集合。我在类路径中添加了mongodb-driver-3.0.0.jar。 但是当我尝试执行代码时,它在数据库连接的行处给了我以下错误: 线程“main”java.lang.noClassDeffounderror:com/mongoDb/connection/bufferprovider在com.chintan.app.mongodbjd