springboot 原生java_springboot—Jpa原生sql使用

packagecom.favorites.repository.impl;importcom.favorites.domain.view.CollectorView;importcom.favorites.repository.BaseNativeSqlRepository;importcom.favorites.repository.CollectorRepository;importcom.favorites.utils.DateUtils;importorg.springframework.stereotype.Service;importjava.util.List;/*** @Description: 获取收藏家

* @Auth: yuyang

* @Date: 2017/1/18 19:35

* @Version: 1.0

**/@Servicepublic class CollectorRepositoryImpl extends BaseNativeSqlRepository implementsCollectorRepository {/*** 收藏文章最多的用户

*@return

*/@OverridepublicLong getMostCollectUser() {

String querySql= "SELECT c.user_id ,COUNT(1) AS counts FROM collect c WHERE type='PUBLIC' AND is_delete='NO' GROUP BY c.user_id ORDER BY counts DESC LIMIT 1";

List objecArraytList =sqlArrayList(querySql);

Object[] obj= objecArraytList.get(0);return Long.valueOf(obj[0].toString());

}/*** 被关注最多的用户

*@paramnotUserId

*@return

*/@OverridepublicLong getMostFollowedUser(Long notUserId) {

String querySql= "SELECT id,follow_id as user_id,COUNT(1) AS counts FROM follow \n" +

"WHERE status='FOLLOW' and follow_id != " + notUserId +

" GROUP BY follow_id ORDER BY counts DESC LIMIT 1";

CollectorView cv= newCollectorView();

List list =sqlObjectList(querySql,cv);

Long userId= list.get(0).getUserId();returnuserId;

}/*** 文章被赞最多的用户

*@paramnotUserIds

*@return

*/@OverridepublicLong getMostPraisedUser(String notUserIds) {

String querySql= "SELECT c.user_id,SUM(p.counts) as counts FROM collect c LEFT JOIN \n" +

"(SELECT collect_id,COUNT(1) as counts FROM praise GROUP BY collect_id)p \n" +

"ON c.id=p.collect_id WHERE c.type='PUBLIC' AND c.is_delete='NO' AND c.user_id NOT IN (" + notUserIds +") \n" +

"GROUP BY c.user_id ORDER BY counts DESC LIMIT 1";

List objecArraytList =sqlArrayList(querySql);

Object[] obj= objecArraytList.get(0);return Long.valueOf(obj[0].toString());

}/*** 文章被评论最多的用户

*@paramnotUserIds

*@return

*/@OverridepublicLong getMostCommentedUser(String notUserIds) {

String querySql="SELECT c.user_id,SUM(p.counts) as counts FROM collect c LEFT JOIN \n" +

"(SELECT collect_id,COUNT(1) as counts FROM `comment` GROUP BY collect_id)p \n" +

"ON c.id=p.collect_id WHERE c.type='PUBLIC' AND c.is_delete='NO' AND c.user_id NOT IN (" + notUserIds +") \n" +

"GROUP BY c.user_id ORDER BY counts DESC LIMIT 1";

List objecArraytList =sqlArrayList(querySql);

Object[] obj= objecArraytList.get(0);return Long.valueOf(obj[0].toString());

}/*** 最受欢迎的用户

*@paramnotUserIds

*@return

*/@OverridepublicLong getMostPopularUser(String notUserIds) {

String querySql= "SELECT u.user_id,SUM(u.counts) as counts FROM\n" +

"(SELECT c.user_id,COUNT(1) as counts FROM collect c LEFT JOIN notice n ON c.id=n.collect_id WHERE c.type='PUBLIC' AND c.is_delete='NO' GROUP BY c.user_id\n" +

"UNION ALL\n" +

"SELECT follow_id,COUNT(1) AS counts FROM follow GROUP BY follow_id)u\n" +

"WHERE u.user_id NOT IN (" + notUserIds + ")\n" +

"GROUP BY u.user_id ORDER BY counts DESC LIMIT 1";

List objecArraytList =sqlArrayList(querySql);

Object[] obj= objecArraytList.get(0);return Long.valueOf(obj[0].toString());

}/*** 近一个月最活跃用户

*@paramnotUserIds

*@return

*/@OverridepublicLong getMostActiveUser(String notUserIds) {long nowTime =DateUtils.getCurrentTime();long lastMonth =DateUtils.getLastMonthTime();

String querySql= "SELECT u.user_id,SUM(u.counts) as counts FROM\n" +

"(SELECT user_id,COUNT(1) as counts FROM collect WHERE create_time>" + lastMonth + " AND create_time

"UNION ALL\n" +

"SELECT user_id,COUNT(1) as counts FROM `comment` WHERE create_time>" + lastMonth + " AND create_time

"UNION ALL\n" +

"SELECT user_id,COUNT(1) as counts FROM praise WHERE create_time>" + lastMonth + " AND create_time

"UNION ALL\n" +

"SELECT user_id,COUNT(1) as counts FROM follow WHERE create_time>" + lastMonth + " AND create_time

"WHERE u.user_id NOT IN (" + notUserIds + ")\n" +

"GROUP BY u.user_id ORDER BY counts DESC LIMIT 1";

List objecArraytList =sqlArrayList(querySql);

Object[] obj= objecArraytList.get(0);return Long.valueOf(obj[0].toString());

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值