CCDS677
2017-06-27 11:51
采纳率: 85.7%
浏览 2.3k

mybatis update操作报错

我单元测试数据的更新操作,一直报错java.sql.SQLException: Parameter index out of range (13 > number of parameters, which is 12)
表结构:
DROP TABLE IF EXISTS business;
CREATE TABLE business(
id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键,
img_file_name varchar(200) DEFAULT NULL COMMENT 图片文件名,
title varchar(50) DEFAULT NULL COMMENT 标题,
subtitle varchar(100) DEFAULT NULL COMMENT副标题,
price decimal(11,2) DEFAULT NULL COMMENT价格(单位:元),
distance int(11) DEFAULT NULL COMMENT距离(单位:米),
number int(11) DEFAULT NULL COMMENT 已售数量,
desc varchar(500) DEFAULT NULL COMMENT 描述,
city varchar(16) DEFAULT NULL COMMENT 城市,
catefory varchar(16) DEFAULT NULL COMMENT 类别,
start_total_num int(11) DEFAULT NULL COMMENT 评论星星总数,
comment_total_num int(11) DEFAULT NULL COMMENT 评论总次数,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

bean:
private Long id;
private String imgFileName;
private String title;
private String subtitle;
private Double price;
private Integer distance;
private Integer number;
private String desc;
private String city;
private String category;
private Long starTotalNum;
private Long commentTotalNum;

 mybatis的update:

```<update id="update">
        update business b SET b.img_file_name=#{imgFileName},b.title=#{title},b.subtitle=#{subtitle},b.price=#{price}
        ,b.distance=#{distance},b.number=#{number},b.desc=#{desc},b.city=#{city},b.category=#{category},b.star_total_num=#{starTotalNum},b.comment_total_num=#{commentTotalNum}
        where b.id=#{id}
    </update>

单元测试:
@Test
public void update(){
BusinessDto businessDto = new BusinessDto();
Long a = new Long(3);
businessDto.setId(a);
businessDto.setCity("北京");
businessDto.setDesc("啦啦啦啦啦啦");
businessService.modify(businessDto);
}






  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • loongshawn 2017-06-28 02:00
    已采纳
     <update id="update" parameterType="BusinessDto ">
            update business b SET b.img_file_name=#{imgFileName},b.title=#{title},b.subtitle=#{subtitle},b.price=#{price}
            ,b.distance=#{distance},b.number=#{number},b.desc=#{desc},b.city=#{city},b.category=#{category},b.star_total_num=#{starTotalNum},b.comment_total_num=#{commentTotalNum}
            where b.id=#{id}
        </update>
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 肉末茄子哈 2017-06-27 12:22

    直接用mybatis的工具类生成不就行了,如果这样写要加if判断,name=null在数据库报错

    评论
    解决 无用
    打赏 举报
  • hello.. 2017-06-28 01:22

    mybatis :首先表达下我的观点,我很喜欢用,mybats成的 实体,和映射文件 完全就满足单表操作,不需要去重新写,分页除外

    评论
    解决 无用
    打赏 举报
  • loongshawn 2017-06-28 02:04


    update business b SET b.img_file_name=#{imgFileName},b.title=#{title},b.subtitle=#{subtitle},b.price=#{price}
    ,b.distance=#{distance},b.number=#{number},b.desc=#{desc},b.city=#{city},b.category=#{category},b.star_total_num=#{starTotalNum},b.comment_total_num=#{commentTotalNum}
    where b.id=#{id}

        还有要加if判断
    
    评论
    解决 无用
    打赏 举报
  • kk1924 2017-07-08 03:18

    其实应该把更多的日志放出来,

    评论
    解决 无用
    打赏 举报
  • 飞廉灬少将 2021-08-31 14:50

    你的update语句中写了几个字段的更新,你在更新的时候必须更新几个字段,不然就报错,你这个update语句里面更新字段最好用if包一下,就是动态SQL

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题