用@Query标注自定义查询语句用原生sql查询符合时间要求的数据与分页等功能

         这个星期在学这开发API接口,其中数据库操作均使用JPA,以下对我遇到的业务逻辑里的一些数据库操作进行小总结,以备参考。

         实例一:查询数据库中满足当前时间的广告(开始时间<=当前时间<=结束时间)

         

package cn.mejor.services.advert_service.dao;

import cn.mejor.services.advert_service.domain.Advert;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * Created by tl on 2017/1/19.
 */
public interface AdvertRepository extends JpaRepository
  
  
   
    {
    @Query(value="select * from mfzs_shop_ads a where DATEDIFF(NOW(),starttime)>0 and DATEDIFF(NOW(),endtime)<0",nativeQuery=true)
    List
   
   
    
     findAvailableAdvs();
}

   
   
  
  

         实例二:查询数据库中满足后台上传的瓷砖及该用户自己上传的瓷砖并分页显示

        

package cn.mejor.services.color_service.dao;

import cn.mejor.services.color_service.domain.CeramicTile;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import java.util.List;


/**
 * Created by tl on 2017/1/16.
 */
public interface CeramicTileRepository extends JpaRepository
  
  
   
    {

    @Modifying
    @Query(value="select c.* from mfzs_ceramic_tile c where c.type=1 or c.type=2 and c.user_id=?1 limit ?2,?3" ,nativeQuery=true)
    List
   
   
    
     findByTypeAndUserId(long userId,int page,int pageSize);

    CeramicTile findByImgId(long imgId);

}
   
   
  
  


         注意:@Query  中 nativeQuery=true 表示为原生Sql不能与Pageable一起使用,所以用sql的limit|来实现分页查询。

        

        

       

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值