JPA在项目中的使用

JPA在项目中的使用

项目类型:企业商场项目,分为小程序端和后台管理端
使用框架:Spring SpringBoot 采用spring-cloud-alibaba 的微服务架构nacos做注册中心,openfeign做远程调用。


问题描述:JPA如何操作数据库

之前的项目中一直使用的是mybatis和mybaitsplus操作数据库,现公司的架构是jpa操作数据库,那么JPA如何操作数据库?

直接看Repository层也就是我们之前说的Dao层

1.Dao层直接继承
JpaRepository<Commodity, String>: 操作Commodity这个实体类(关联表),String表示主键id的类型。
JpaSpecificationExecutor:让你可以直接使用其中自带写好的一些方法。

2.自定义方法,类似于mybatis写sql语句,JPA则是直接对对象进行操作

@Repository("commodityDao")
public interface CommodityDao extends JpaRepository<Commodity, String>, JpaSpecificationExecutor<Commodity> {

    /**
     * (逻辑删除)
     *
     * @param delIds
     */
    @Modifying
    @Transactional
    @Query("update Commodity c set  c.isEnabled=-1  where c.id in(?1)")
    void delByModelSpecificationIds(List<String> delIds);

	//查询商品表的id数量,当商品的code=传递的参数的第一个
    @Query("select count(c.id) from Commodity c where c.code=?1")
    int getCountByCode(String code);

	//修改商品的isPutAway=?1  即修改isPutAway的值为传参的第一个,in (?2)即
    @Modifying
    @Transactional
    @Query("update Commodity c set c.isPutAway=?1 where c.id in (?2)")
    void putAwayByIds(Integer putAwayType, List<String> ids);

3.以上就实现了对商品表的操作
在这里插入图片描述

4.增删改查
增:直接通过commodityDao.save() , 存的对象带id即代表修改,否则为新增。
删:逻辑删即修改,通过@query注解 update 对象 别名 set 别名.字段 = ;
改:@Query(“update Commodity c set c.isPutAway=?1 where c.id in (?2)”)
查:@Query(“select count(c.id) from Commodity c where c.code=?1”)

5.刚上手时操作对象不顺手,也可支持直接使用原生的sql语句nativeQuery = true

 @Query(value = "select * from tb_ally_search_history where user_id =:id order by modify_time desc limit 10  ",nativeQuery = true)
    List<SearchHistory> findAllNewByUserId(@Param("id") String userId);

如上:通过原生sql直接对该用户修改时间字段排序,并取10条。

ps:表名字段需跟数据库对应上,不再是跟实体类对应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿帆哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值