SpringMVC 强大的注解方式,走一个流程,看看,这些注解用过么

 

  • 实现方式一:

  • Controller层:
 1 import java.util.List;
 2 import java.util.Map;
 3 import java.util.NoSuchElementException;
 4 import java.util.Optional;
 5 
 6 import org.apache.commons.lang3.StringUtils;
 7 import org.bson.types.ObjectId;
 8 import org.slf4j.helpers.MessageFormatter;
 9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.data.domain.Page;
11 import org.springframework.data.domain.PageRequest;
12 import org.springframework.data.domain.Pageable;
13 import org.springframework.data.mongodb.core.MongoTemplate;
14 import org.springframework.http.HttpStatus;
15 import org.springframework.http.MediaType;
16 import org.springframework.http.ResponseEntity;
17 import org.springframework.security.access.prepost.PreAuthorize;
18 import org.springframework.security.core.annotation.AuthenticationPrincipal;
19 import org.springframework.security.core.userdetails.UserDetails;
20 import org.springframework.util.Assert;
21 import org.springframework.web.bind.annotation.GetMapping;
22 import org.springframework.web.bind.annotation.PatchMapping;
23 import org.springframework.web.bind.annotation.PathVariable;
24 import org.springframework.web.bind.annotation.RequestBody;
25 import org.springframework.web.bind.annotation.RequestMapping;
26 import org.springframework.web.bind.annotation.RestController;
27 
28 import lombok.extern.slf4j.Slf4j;
29 
30 /**
31  * Created by wangqb/BGStone on 2017-07-11
32  */
33 @RestController
34 @RequestMapping("/wqb")
35 @Slf4j
36 public class DisputableNoteController {
37     @Autowired
38     NoteDBRepository noteDBRepository;
39     
40     @Autowired
41     EntityRepository entityRepository;
42     
43     @Autowired
44     MongoTemplate mongoTemplate;
45     
46     @PreAuthorize("hasRole('" + admin + "') ")
47     @GetMapping(value = "/querypage/{pageNo:[\\d]+}/{pageSize:[\\d]+}", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
48     public ResponseEntity<?> queryData(@AuthenticationPrincipal UserDetails activeUser,
49             @PathVariable String pageNo,
50             @PathVariable String pageSize){
51         
52         logger.debug("User '{}' is allocating note.", activeUser.getUsername());
53         int page = 1;
54         int size = 20;
55         if (pageNo != null) {
56                 page = Integer.valueOf(pageNo);
57         }
58         if (pageSize != null) {
59             size = Integer.valueOf(pageSize);
60         }
61         
62         
63         Pageable pageable = new PageRequest(page,size);
64         
65             Page<Entity> entityPage = entityReponsitory.findByStatus(pageable);
66 
67 
68         logger.debug("List<Invoice>.Size() '{}' was allocated to user '{}' for typing.", entityPage.getSize() <= 0 ? null : entityPage.getContent().size(),
69                 activeUser.getUsername());
70         
71         System.out.println("List<Entity>.all() " + result.toString() +" was allocated to user "+ activeUser.getUsername() +" for typing.");
72 
73         logger.info("List<Entity>.content() '{}' was allocated to user '{}' for typing.", entityPage.getSize() <= 0 ? null :entityPage.getContent().size(),
74                 activeUser.getUsername());
75         return ResponseEntity.status(HttpStatus.OK).body(entityPage);
76     }
77     
78     @PreAuthorize("hasRole('" + admin +"')")
79     @GetMapping(value = {"/find/{id:.+}/data"}, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
80     public ResponseEntity<?> findById(@AuthenticationPrincipal UserDetails activeUser,
81                         @PathVariable("id") String noteId){
82         logger.debug("User '{}' is allocating note.", activeUser.getUsername());
83         
84         System.out.println(" Optional<Entity> "+ entityOptional.get().toString() +" was allocated to user "+ activeUser.getUsername() +" for typing.");
85         
86         logger.debug("Invoice '{}' was allocated to user '{}' for typing.", entityOptional == null ? null : entityOptional.get(),
87                 activeUser.getUsername());
88         return ResponseEntity.status(HttpStatus.OK).body(entityOptional);
89     }
90 }
View Code

 

  • 数据持久层  Repository的代码
 1 import org.bson.types.ObjectId;
 2 import org.springframework.data.domain.Page;
 3 import org.springframework.data.domain.Pageable;
 4 import org.springframework.data.mongodb.repository.MongoRepository;
 5 import org.springframework.data.mongodb.repository.Query;
 6 import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 7 import org.springframework.data.rest.core.annotation.RestResource;
 8 import org.springframework.security.access.prepost.PreAuthorize;
 9 
10 import java.util.Optional;
11 
12 /**
13  * Created by *** on 2017/3/28.
14  */
15 @RepositoryRestResource(collectionResourceRel = "test", path = "testpath", exported = true)
16 public interface EntityRepository extends MongoRepository<Entity, String>, EntityRepositoryCustom,
17         EntityAllotRepositoryCustom {
18     
19     /*
20      * Created by wangqb on 2017-07-11
21      */
22     @Query(value="{'status': 'condition' }")
23     Page<Entity> findByStatus(Pageable pageable);
24 }
View Code

 

 

  • 实现方式二:

查询条件版二:

 1         int page = 1;
 2         int size = 20;
 3         if (pageNo != null) {
 4                 page = Integer.valueOf(pageNo);
 5         }
 6         if (pageSize != null) {
 7             size = Integer.valueOf(pageSize);
 8         }
 9         
10         Pageable pageable = new PageRequest(page,size);
11 
12         Invoice invoiceVo = new Invoice();
13         invoiceVo.setStatus(Invoice.Status.Incorrect);
14         ExampleMatcher matcher = ExampleMatcher.matching()
15                         .withMatcher("status", GenericPropertyMatchers.exact());
16         Example example = Example.of(invoiceVo);
17         
18         Page<Invoice> invoicePage = invoiceRepository.findAll(example, pageable);
View Code

 

 

posted @ 2017-07-13 18:34  BGStone  阅读(165)  评论(0编辑  收藏  举报