关于mybatis进行update更新时无法提交&update动态sql的使用

首先,我发现代码明明执行成功,自己也并没有发现sql语句有问题,但是查看数据库却发现没有更新,最后才发现,没有进行事务的提交

数据的增删改查中,除了select语句,其余的语句都需要进行事务的提交。


动态sql(是我写的update语句)

<update id="updateInfo"  parameterType="com.zy.entity.User"> 

   UPDATE user 
       <trim prefix="set" suffixOverrides=",">  

       <if test="userName!=null">userName=#{userName},</if>  

       <if test="nickName!=null">nickName=#{nickName},</if>  

       <if test="avatar!=null">avatar=#{avatar},</if>  

       <if test="email!=null">email=#{email},</if>  

       <if test="age!=null">age=#{age},</if>  

       <if test="introduction!=null">introduction=#{introduction},</if>  
   </trim> 

   WHERE id=#{id}

</update>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Mybatisupdate语句可以使用动态sql来实现灵活的更新操作。动态sql可以根据不同的条件来生成不同的sql语句,从而实现灵活的更新操作。常用的动态sql标签包括if、choose、when、otherwise、set等。其中,if标签可以根据条件判断是否需要更新某个字段,choose标签可以根据多个条件选择不同的更新方式,set标签可以设置需要更新的字段和值。使用动态sql可以大大提高Mybatis的灵活性和可维护性。 ### 回答2: MyBatis是一个优秀的ORM(对象关系映射)框架,在使用MyBatis进行CRUD操作,我们往往需要使用update语句动态sql进行数据的修改操作。MyBatis使用update标签来定义update语句,并支持使用动态SQL语法进行动态处理。下面我将结合实例来具体介绍MyBatis动态SQLupdate语句使用方法。 (1)无条件更新语句 当我们需要更新一张表的所有记录,可以使用下面的update语句: ``` <update id="updateAllUsers" parameterType="Map"> update user set status=#{status} </update> ``` 上面的update语句中,我们使用update标签来定义update语句,id属性定义了这个update语句的名称,parameterType属性指定了传递给update语句的参数类型。在update语句中,我们使用了set子句来指定要更新的列和对应的新值。 (2)根据条件更新语句 如果我们需要根据条件进行更新,比如根据id来更新一条记录,可以使用下面的update语句: ``` <update id="updateUserById" parameterType="Map"> update user set status=#{status} where id=#{id} </update> ``` 上面的update语句中,我们使用了where子句来指定更新的条件,其中#{id}是从Map类型的参数中获取的。 (3)多条件更新语句 如果我们需要根据多个条件进行更新,可以使用下面的update语句: ``` <update id="updateUsersByParams" parameterType="Map"> update user set status=#{status} where name=#{name} and age > #{age} </update> ``` 上面的update语句中,我们使用了and关键字来组合多个条件,其中#{name}和#{age}是从Map类型的参数中获取的。 (4)动态更新语句 MyBatis支持使用动态SQL语法来动态构建update语句,具体做法是在update标签中使用if和where动态标签。下面是一个使用动态SQL语法的update语句实例: ``` <update id="updateUser" parameterType="User"> update user <set> <if test="name != null">name=#{name},</if> <if test="age != null">age=#{age},</if> <if test="status != null">status=#{status},</if> </set> <where> <if test="id != null">id=#{id}</if> </where> </update> ``` 上面的update语句中,我们使用了set子句中的if标签来对要更新的列进行判断和拼接,使用where子句中的if标签来对更新的条件进行判断和拼接。这样就实现了动态构建update语句的功能。 总之,MyBatisupdate语句动态SQL功能为我们提供了更加灵活、方便的数据更新操作方式,使我们能够更加高效地完成应用开发工作。 ### 回答3: MyBatis是一种开源的Java持久层框架,它可以通过使用XML或注解将SQL操作与Java代码分离,并且提供了灵活的动态SQL语句。在MyBatis中,更新操作的动态SQL语句可以通过使用update标签来实现。 update标签是MyBatis中用于执行更新操作的标签,它可以包含各种动态SQL节点,例如if,choose,foreach等。update标签可以使用parameterType属性指定传入参数的Java类型,使用statementType属性指定执行语句的类型。下面是一个简单的update标签示例: ``` <update id="updateUser"> update user set username=#{username}, password=#{password} where id=#{id} </update> ``` 在上面的update标签中,id属性表示更新操作的唯一标识符,update user set...where语句表示要执行的SQL语句。#{...}是MyBatis中的占位符,会根据传入的参数进行替换。 如果要在update语句中使用动态条件,可以使用if节点。if节点的test属性用于指定条件表达式,条件成立才会执行节点中的SQL语句。下面是一个包含if节点的update标签示例: ``` <update id="updateUser"> update user <set> <if test="username != null">username = #{username},</if> <if test="password != null">password = #{password},</if> </set> where id=#{id} </update> ``` 在上面的示例中,使用了set标签来指定要更新的字段。如果用户名不为空字符串,则会添加username=#{username}到更新语句中,如果密码不为空字符串,则会添加password=#{password}到更新语句中。 除了if节点之外,MyBatis还提供了其他类型的动态SQL节点,例如choose,when,otherwise和foreach。这些节点可以方便地实现根据不同条件生成不同的更新语句。 总之,MyBatis动态SQL语句非常灵活,能够根据不同的条件生成不同的SQL语句,使得开发者能够更容易地编写出高效、灵活的数据访问代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值