如何使用JPA自定义更新的sql语句实现对数据表的修改?——SpringDataJpa实现自定义(更新)update语句


前言

        有的时候我们在后台管理系统中只需要修改一列的数据时,JPA的操作死对所有字段进行修改,这样就不太方便,而且SpringDataJpa的框架没有线程的更新方法,只能调用save()方法实行保存修改的数据。

        如果不想把其中一列的数据修改的话,那么JPA就会自动把这一列不想修改的数据默认null,并且清空。况且只更新一处的话,这个也不太适用。所以楼主尝试着自定义sql语句来写。


启发与cnblogs_博客:

https://www.cnblogs.com/super-hu/p/11982384.html


操作步骤

一、DAO层/Mapper层

public interface OrdersDao extends JpaRepository<Orders,String>,JpaSpecificationExecutor<Orders>{
    
    
    
    @Modifying//增删改操作必须要有这个注解
    @Transactional // 事务的注解
    @Query(value = "UPDATE orders SET `status`='1' WHERE id = ? ",nativeQuery = true) // nativeQuery 表示自然的sql数据库语句,
    // 更新语句的意思是根据id 去更新 状态列,把status改为1.
    void updateStatus(String id);  // 定义更新状态的方法,根据id去更新,没有返回值。
    
    List<Orders> findByUserid(String userId);
}

二、Service业务处理层

代码如下(示例):


@Service
public class OrdersService {
    
    
	@Autowired
	private OrdersDao ordersDao;

	public void updateStatus(String status) {
    
    
		ordersDao.updateStatus(status);
	}
}

三、Controller控制层

代码如下(示例):

	@Autowired
	private OrdersService ordersService;
/**
	 * 修改
	 * @param
	 */
	@ResponseBody
	@RequestMapping(value="/{id}",method= RequestMethod.PUT)
	public Result update(@PathVariable String id){
    
    

		System.out.println(id);
		ordersService.updateStatus(id);
		return new Result(true,StatusCode.OK,"修改成功");
	}

总结

Dao层自定义sql语句,服务层编写方法调用dao层方法,最后控制层调用服务层方法。

猜你喜欢

转载自blog.csdn.net/qq_43055855/article/details/111029046