Mysql中Update和Delete返回值的问题
前言
Github:https://github.com/HealerJean
我们都知道update和delete语句返回的是我们修改的行数,那么在jpa和mybatis中是如果实现的呢,请看下面
当然我们也可以设置为void,这是无所谓的,因为有了返回值(int ,Integer都可以),我不要也可以啊,这与我们自己的业务逻辑有关系
1、jpa
public interface DemoEntityRepository extends CrudRepository<DemoEntity,Long> {
/**
* 更新字段,判断更新了几条数据 ,没有 resultType
*/
@Modifying
@Query(value = "update demo_entity d set d.age = d.age +1 where d.name =?1" ,nativeQuery = true)
Integer jpaUpdateByName( String name) ;
/**
* 删除字段,如果是对象删除则不能使用我们 d.*
* 这和mysql有很大的不一样,mysql 如果使用了变量 d,delete 不使用 d.*是错误的
* @param name
* @return
*/
@Modifying
@Query(value = "delete d.* from demo_entity d where d.name = :name",nativeQuery = true)
Integer jpaDeletByName(@Param("name") String name) ;
//
// @Modifying 对象映射
// @Query(value = "delete from DemoEntity d where d.name = :name")
// int jpaDeletByName(@Param("name") String name) ;
}
2、mybatis
会发现不能写resultType,如果加上就错了,即使这样,我们还可以让他返回int类型的数据
3.1、mapper
/**
* 更新字段,判断更新了几条数据 ,没有 resultType
*/
Integer mybatisUpdateByName(String name) ;
Integer mybatisDeletByName(String name) ;
3.2、xml
<update id="mybatisUpdateByName">
update demo_entity d set d.age = d.age +1 where d.name = #{name}
</update>
<delete id="mybatisDeletByName">
delete d.* from demo_entity d where d.name = #{name}
</delete>