m0_62221434 2022-08-24 14:39 采纳率: 100%
浏览 75
已结题

mybatis怎么根据多个条件对指定字段进行内容修改?

根据用户编号,日期,类型条件进行查询此用户某天数据,在对指定字段进行内容修改,sql要怎么写?测试方法怎么写?

// 接口
void updateId(QshGfConsData qshGfConsData);



//接口实现
<update id="updateId">
update QSH_S_GFCONS_DATA
<set>
<if test="rap_el=null">
rap_e =# rap_e
</if>
and
<if test="data_value!=null">
data_value =# data_value
</if>
</set>
WHERE CONS_NO = # CONS_NO]
AND DATA_DATE =#DATA_DATE
AND USAGE_TYPE_CODE =# USAGE_TYPE_CODE
</update>

//测试方法
@Test
public void updateQsh() throws ParseException 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( pattern:"yyyy-MM-dd");

Date date = simpleDateFormat.parse( source:"2022-08-01");
QshGfConsData qshGfConsData1 = qshGfConsData.updateId(ashGfConsData: 12.2 12.2);
  • 写回答

6条回答 默认 最新

  • 优质网络系统领域创作者 网络领域新星创作者 2022-08-25 08:29
    关注

    简单记录下:想要修改一张表,是联合主键,也就是where后两个以上条件才能唯一确定一条数据。
    如果有唯一键,那么foreach中 用in就可以解决。
    现在没办法用in,不然 A in (#{})and B in (#{})感觉成笛卡尔了。
    简单点就是要实现执行多条语句。对update做循环。传入参数为 List,ATest类中字段A,B为联合主键,修改C的值

    update table_ABC C = #{val.C}, where A=#{val.A} and B= #{val.B} 1 2 3 4 5 6 7 8 9 执行出来效果为: begin update table_ABC set C = '2' where A = '1' and B= '1'; update table_ABC set C = '2' where A = '1' and B= '2'; update table_ABC set C = '4' where A = '3' and B= '2'; end; 这里使用的数据库为oracle,oracle执行认为begin和end之前为一条语句

    当然,也可以用or 的形式拼接,不过还没测试。
    网上查有的说是mysql数据库 mybatis一次执行一条语句。支持多条,可以MySQL连接数据库时,添加语句:“allowMultiQueries=true”
    作用:
    1.可以在sql语句后携带分号,实现多语句执行。
    2.可以执行批处理,同时发出多个SQL语句。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 赞助了问题酬金10元 8月24日
  • 修改了问题 8月24日
  • 展开全部

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效