zoukankan      html  css  js  c++  java
  • Jpa分页查询

    1.model

    import com.fasterxml.jackson.annotation.JsonFormat;
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    import javax.persistence.*;
    import java.io.Serializable;
    import java.util.Date;
    
    @Entity
    @Data
    @ApiModel
    @Table(name = "user")
    public class User implements Serializable {
        @ApiModelProperty(value="用户id")
        @Id
        @GeneratedValue
        private Long id;
    
        @ApiModelProperty(value="会员编码")
        private Long code;
    
        @ApiModelProperty(value="姓名")
        private String userName;
    
        @ApiModelProperty(value="手机")
        private String phone;
    
        @ApiModelProperty(value="公司")
        private String company;
    
        @ApiModelProperty(value="联系地址")
        private String address;
    
        @ApiModelProperty(value="注册类型:1-个人 2-企业")
        private Integer type;
    
        @ApiModelProperty(value="创建时间")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date createTime;
    
        @ApiModelProperty(value="认证状态:0-未认证 1-已认证")
        private Integer pass;
    
        @ApiModelProperty(value="会员级别")
        @ManyToOne
        private UserLevel userLevel;
    
        @ApiModelProperty(value="会员状态 0-过期 1-有效")
        private Integer state;
    
        @ApiModelProperty(value="会员入会时间")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date enrolTime;
    
        @ApiModelProperty(value="会员到期时间")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date expireTime;
    }

    2.repository

    import com.oigcn.association.model.User;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface UserRepository extends JpaRepository<User,Long> {
        //分页查询用户名
        @Query(value = "SELECT * FROM user WHERE 1=1 AND (userName=:userName OR :userName IS NULL) AND (pass=:pass OR :pass IS NULL)",countQuery = "SELECT COUNT(*) FROM user WHERE (userName=:userName OR :userName IS NULL) AND (pass=:pass OR :pass IS NULL)",nativeQuery = true)
        Page<User> findUserByQuery(Pageable pageable,@Param("userName") String userName,@Param("pass") Integer pass);
        //分页查询用户
        @Query("select u from User u where 1=1 AND (userName=:#{#user.userName} OR :#{#user.userName} IS NULL) AND (pass=:#{#user.pass} OR :#{#user.pass} IS NULL)")
        Page<User> findUserBy(Pageable pageable,@Param("user") User user);
    }

    3.service

    import com.oigcn.association.model.User;
    import org.springframework.data.domain.Page;
    
    public interface UserService {
        Page<User> page(int pageNo,int pageSize,String userName,Integer pass);
        Page<User> pageAll(int pageNo,int pageSize,User user);
    }
    import com.oigcn.association.model.User;
    import com.oigcn.association.repository.UserRepository;
    import com.oigcn.association.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.domain.Sort;
    import org.springframework.stereotype.Service;
    
    import javax.transaction.Transactional;
    
    @Service
    @Transactional
    public class UserServiceImpl implements UserService {
        private final UserRepository userRepository;
    
        @Autowired
        public UserServiceImpl(UserRepository userRepository) {
            super();
            this.userRepository = userRepository;
        }
        @Override
        public Page<User> page(int pageNo,int pageSize,String userName,Integer pass) {
            Sort sort = new Sort(Sort.Direction.DESC,"createTime"); //创建时间降序排序
            Pageable pageable = PageRequest.of(pageNo - 1,pageSize,sort);
            Page<User> page = this.userRepository.findUserByQuery(pageable,userName,pass);
            return page;
        }
    
        @Override
        public Page<User> pageAll(int pageNo, int pageSize, User user) {
            Sort sort = new Sort(Sort.Direction.DESC,"createTime"); //创建时间降序排序
            Pageable pageable = PageRequest.of(pageNo - 1,pageSize,sort);
            Page<User> page = this.userRepository.findUserBy(pageable,user);
            return page;
        }
    }

    4.action

    import com.oigcn.association.model.User;
    import com.oigcn.association.service.UserService;
    import com.oigcn.association.utils.Response;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiImplicitParams;
    import io.swagger.annotations.ApiOperation;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("/user")
    @Slf4j
    @Api(tags = "会员管理")
    public class UserAction {
        @Autowired
        private UserService userService;
    
        @GetMapping("/page")
        @ApiOperation(value = "会员管理分页查询")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "pageNo",value = "分页开始,默认1"),
                @ApiImplicitParam(name = "pageSize", value = "一页大小,默认50"),
                @ApiImplicitParam(name = "userName", value = "用户名",required = true)
        })
        public Response page(@RequestParam(defaultValue = "1") int pageNo,@RequestParam(defaultValue = "50") int pageSize,@RequestParam(required = false) String userName,@RequestParam(required = false) Integer pass ){
            log.info("用户管理分页查询pageNo={},pageSize={},userName={},pass={}",pageNo,pageSize,userName,pass);
            return Response.success(this.userService.page(pageNo,pageSize,userName,pass));
        }
        @PostMapping("/pageAll")
        public Response pageAll(@RequestParam(defaultValue = "1") int pageNo,@RequestParam(defaultValue = "50") int pageSize,@ModelAttribute User user){
            log.info("用户管理分页查询user={}",user);
            return Response.success(this.userService.pageAll(pageNo,pageSize,user));
        }
    }
  • 相关阅读:
    简单SSM配置详解
    Nginx 简介
    序列化与反序列化
    用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
    Linux
    jsp标签精华(持续更新中)
    ZooKeeper 编程(一)
    maven环境快速搭建
    Web项目--------原Oracle数据库的项目同时兼容MySql
    JavaMail实现邮箱之间发送邮件功能
  • 原文地址:https://www.cnblogs.com/i-tao/p/13856722.html
Copyright © 2011-2022 走看看