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)); } }