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 "根据名称删除成功";
}