mybatis update set 多个字段

<update id="updateCustomer" parameterType="com.entrym.domain.Customer">
    UPDATE customer set
    <if test="name!=null">name=#{name,jdbcType=VARCHAR},</if>
    <if test="role!=null">role=#{role,jdbcType=VARCHAR},</if>
    <if test="userId != null">user_id = #{userId,jdbcType=INTEGER},</if>
    <if test="qq != null">qq = #{qq,jdbcType=VARCHAR},</if>
    <if test="mobile != null">mobile = #{mobile,jdbcType=VARCHAR}</if>
    WHERE id =#{id,jdbcType=BIGINT}

如果上面的mobile字段为null,执行下面的SQL语句

UPDATE customer set name=?,role=?,userId=?,qq=? where id=?

where 前面有逗号“,”就会报错

使用trim可以删掉最后字段的逗号“,”
set已被包含在trim中,所以不用重复写了:

<update id="updateCustomer" parameterType="com.entrym.domain.Customer">
    UPDATE customer
    <trim prefix="set" suffixOverrides=",">
      <if test="claimTime!=null">claim_time=#{claimTime,jdbcType=VARCHAR},</if>
      <if test="claimState!=null">claim_state=#{claimState,jdbcType=INTEGER},</if>
      <if test="name!=null">name=#{name,jdbcType=VARCHAR},</if>
      <if test="role!=null">role=#{role,jdbcType=VARCHAR},</if>
      <if test="platformAccount!=null">platform_account=#{platformAccount,jdbcType=VARCHAR},</if>
      <if test="collaborateTime!=null">collaborate_time=#{collaborateTime,jdbcType=VARCHAR},</if>
     <if test="collaborateState!=null">collaborate_state=#{collaborateState,jdbcType=INTEGER},</if>
      <if test="userId != null">user_id = #{userId,jdbcType=INTEGER},</if>
    <if test="qq != null">qq = #{qq,jdbcType=VARCHAR},</if>
    <if test="mobile != null">mobile = #{mobile,jdbcType=VARCHAR}</if>
     </trim>
     WHERE id =#{id,jdbcType=BIGINT}
</update> 
时间: 2024-12-25 14:05:54

mybatis update set 多个字段的相关文章

mybatis 操作动态表+动态字段+存储过程

mybatis 操作动态表+动态字段+存储过程 存储过程   statementType="CALLABLE" <!-- 计算金额存储过程--> <update id="getCalcDistributorSettle" statementType="CALLABLE" parameterType="java.util.Map"> <![CDATA[ CALL procCalcDistributo

Mybatis Plus 更新时间 updateTime字段报错 Could not set property &#39;updateTime&#39;

背景 遇到这个问题折腾好几个小时,差点被逼疯.记录一下. 先说下环境,MySQL数据库,表中字段名为update_time,类型为datetime.Java实体类中对应的变量是java.util.Date类型的updateTime. 环境交代完毕,使用update语句更新记录的时候,一直报错,说类型不匹配.贴上报错信息: 1 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.refle

Mybatis 批量更新多个字段值

Mybatis 批量更新多个字段值 Controller /** * * @Description: 生产物资-指标 发布接口 * @Creator: tangsw * @CreateTime: 2019-12-25 10:37:34 * @Modifier: * @ModifyTime: * @Reasons: * @param output 产品生产产量 * @param capacity 产能利用率 * @param contract 按期履约率 * @param vendor 供应商不良

数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例 实验所用数据表 子查询,解决一步不能求解 查询工资比scott高的员工信息: 子查询知识体系搭建: 解释3,查询部门是sales的员工信息: 方法1:子查询 [方法2]:多表: 优化考虑: 解释4[select],只能放单行子查询 解释4[from] 考题:显示员工姓名,薪水 解释

update 表名 set 字段=值,数据更新

--数据更新 必须考虑是否有条件,往往能够做条件首先考虑主键值和唯一键语法:update 表名 set 字段=值,字段=值 .....where 条件 not|and|or--修改年龄 update Teacher set Age=18--将所有人年龄+1 设置表达式update Teacher set Age=Age+1--有条件的修改:修改张三的工资+1000,同时修改性别为女update Teacher set Salary+=1000,Gender='女' where Id=4--修改出

mybatis操作动态表+动态字段+存储过程

存储过程 statementType="CALLABLE" <!-- 计算金额存储过程--> <update id="getCalcDistributorSettle" statementType="CALLABLE" parameterType="java.util.Map"> <![CDATA[ CALL procCalcDistributorSettle (#{ID},#{message})

update更新两个字段

update更新两个字段时的sql语句: update tj_record set is_recycle_reprint_guide='1' , recycle__guide_date=now() where id = #{record_id} 科室如果我将字段的","写成了and也不报错.但是更新不了.如图: 切记,更新多个字段时是以逗号分隔. update更新两个字段

【mybatis】 mybatis在mysql 更新update 操作 更新时间字段按照年月日时分秒格式 更新为当前时间

示例代码如下: update goods_msg SET create_date = DATE_FORMAT(NOW(),'%Y-%m-%d %H:%m:%s') WHERE uid = '6183b000-e7b3-4f38-8943-c9f170bd2d80' 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9158888.html

mybatis动态接收表名,字段名,字段值

由于没分清mybatis中的$和#的区别,在处理数据上折腾了许久. 案例如下: 我要通过在实体MisWorkflowCommon中取值,在mybatis对应的映射文件的SQL中获取到对应的值,从而进行update处理,修改后的部分mybatis文件如下: <update id="updateServiceStatus" parameterType="com.jiayou.cps.pojo.workflowCommon.MisWorkflowCommon">