sping data jpa 实现增删改查

5 篇文章 0 订阅
2 篇文章 0 订阅

简介

JPA即Java Persistence API,Java持久化API,官方这么解释Spring Data JPA是更大的Spring Data系列的一部分,
可以轻松实现基于JPA的存储库。此模块处理对基于JPA的数据访问层的增强支持。它使构建使用数据访问技术的
Spring驱动应用程序变得更加容易。

实现

实体类

@Entity
@Table(name="tb_brand")
public class Brand implements Serializable{

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Id
	private Long id;


    //品牌名称
	private String name;
    //品牌首字母
	private String firstChar;


	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public String getFirstChar() {
		return firstChar;
	}
	public void setFirstChar(String firstChar) {
		this.firstChar = firstChar;
	}


	
}

持久层

public interface BrandDao extends JpaRepository<Brand,Long>,JpaSpecificationExecutor<Brand>{


}

服务层

@Service
public class BrandService {

	@Autowired
	private BrandDao brandDao;
	
	/**
	 * 查询全部列表
	 * @return
	 */
	public List<Brand> findAll() {
		return brandDao.findAll();
	}

	
	
	/**
	 * 根据ID查询实体
	 * @param id
	 * @return
	 */
	public Brand findById(Long id) {
		return brandDao.findById(id).orElse(null);
	}

	/**
	 * 增加
	 * @param brand
	 */
	public void add(Brand brand) {

		brandDao.save(brand);
	}

	/**
	 * 修改
	 * @param brand
	 */
	public void update(Brand brand) {
		brandDao.save(brand);
	}

	/**
	 * 删除
	 * @param id
	 */
	public void deleteById(Long id) {
		brandDao.deleteById(id);
	}

控制层

@RestController
@RequestMapping("/brand")
public class BrandController {

	@Autowired
	private BrandService brandService;

	/**
	 * 查询全部数据
	 * @return
	 */
	@RequestMapping(method= RequestMethod.GET)
	public Result findAll(){
		return new Result(true,StatusCode.OK,"查询成功",brandService.findAll());
	}
	/**
	 * 根据ID查询
	 * @param id ID
	 * @return
	 */
	@RequestMapping(value="/{id}",method= RequestMethod.GET)
	public Result findById(@PathVariable Long id){
		Brand brand=brandService.findById(id);
		if (brand==null){
			return new Result(false, StatusCode.ERROR, "无数据");
		}
		return new Result(true,StatusCode.OK,"查询成功",brand);
	}

	
	/**
	 * 增加
	 * @param brand
	 */
	@RequestMapping(method=RequestMethod.POST)
	public Result add(@RequestBody Brand brand  ){
		brandService.add(brand);
		return new Result(true,StatusCode.OK,"增加成功");
	}
	
	/**
	 * 修改
	 * @param brand
	 */
	@RequestMapping(value="/update",method= RequestMethod.PUT)
	public Result update(@RequestBody Brand brand){
		brandService.update(brand);
		return new Result(true,StatusCode.OK,"修改成功");
	}
	
	/**
	 * 删除
	 * @param id
	 */
	@RequestMapping(value="/delete/{id}",method= RequestMethod.DELETE)
	public Result delete(@PathVariable Long id){
		brandService.deleteById(id);
		return new Result(true,StatusCode.OK,"删除成功");
	}

如果要做一个条件查询应该怎么实现呢?

方式一

持久层
 @Modifying
  @Query(value = "SELECT id,category_id,title,url,pic,sort_order,status from tb_content   WHERE status=1",nativeQuery = true)
    public List<Content> findByStatus();

服务层


	public List<Content> findByStatus() {
		return contentDao.findByStatus();
	}

其他的地方与其他接口写法无异,值得注意的是sql在写的时候,where跟的这个字段必须得在select查的字段里面,否则
报错找不到这个字段

方式二

持久层

 public List<Content> findByStatus(String status);

服务层

	public List<Content> findByStatus() {
		return contentDao.findByStatus("1");
	}

这种方式更加简单,不需要写sql,其原理与根据id查询类似。
推荐使用这种方式,更加优雅,更加简洁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值