eclipse中搭建springboot学习(8)---JPA使用2(自定义sql)

PersonRepository

package com.example.demo1019.dao;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.example.demo1019.dto.PersonDTO;

public interface PersonRepository extends JpaRepository<PersonDTO, Long> {

    // 其实Spring data 觉大部分的SQL都可以根据方法名定义的方式来实现,但是由于某些原因我们想使用自定义的SQL来查询,spring
    // data也是完美支持的;在SQL的查询方法上面使用@Query注解,如涉及到删除和修改在需要加上@Modifying.也可以根据需要添加
    // @Transactional对事物的支持,查询超时的设置等

    // 占位符传值形式
    @Transactional
    @Modifying
    @Query("delete from PersonDTO where age= ?1")
    // sql中的表明必须是DTO的名字,而不是数据库中表的名字
    void deleteByAge(int age);

    // SPEL表达式
    @Transactional
    @Modifying
    @Query("delete from PersonDTO where name=:name")
    // 参数name 映射到数据库字段name
    void deleteByName(@Param("name") String name);

}

PersonService添加方法

 public void deleteByAge(int age) {
        personRepository.deleteByAge(age);
    } 

 public void deleteByName(String name) {
        personRepository.deleteByName(name);
    }

PersonController添加方法

 

 /**
     * 按年纪删除数据
     * 
     * @param age
     * @return
     */
    @RequestMapping("/deletePersonByAge/{age}")
    @ResponseBody
    public String deletePersonByAge(@PathVariable("age") int age) {
        personService.deleteByAge(age);
        return "根据年纪删除成功";
    }

    /**
     * 按名称删除数据
     * 
     * @param age
     * @return
     */
    @RequestMapping("/deletePersonByName/{name}")
    @ResponseBody
    public String deletePerson(@PathVariable("name") String name) {
        personService.deleteByName(name);
        return "根据名称删除成功";
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值