The first NamedQuery (returns column schema [complex query in raw SQL])

1) The DAO layer processes queries and paginates them

Java code * * * * * * * *

1. @SuppressWarnings(“unchecked”)  

2.     public PageResult getList(Integer currentPage){  

3.         PageResult pageResult = new PageResult();  

4.             int pageSize = Constant.DEFAULT_PAGE_SIZE;  

5.             int start = (currentPage – 1) * pageSize;  

6.             Query query = getEntityManager().createNamedQuery(“ReturnTrainAppyUser”);  

7.             int total = query.getResultList().size();  

8. // Determine paging

9.             if (start < total && pageSize > 0) {  

10.                 query.setFirstResult(start);  

11.                 query.setMaxResults(pageSize);  

12.                 pageResult.setFirst(start);  

13.                 pageResult.setPageSize(pageSize);  

14.}

15.               

16.             pageResult.setTotalCount(total);  

17.             pageResult.setPageResultList(query.getResultList());  

18.         return pageResult;  

19.}

2) Control layer code

Java code * * * * * * * *

1. @RequestMapping(“/applyList”)  

2.     public String applyList(HttpServletRequest request,  

3.             HttpServletResponse response, Model model) throws Exception {  

4.         Integer currentPage = 1;  

5.         Integer pageNum = getIntParameter(request, “pageNum”);  

6. if (pageNum ! = null) {

7.             currentPage = getIntParameter(request, “pageNum”);  

8.}

9.         PageResult a = trainApplyService.findContentResult(currentPage);  

10.         addPageResultModel2(a, currentPage, model);  

11.         return “common/train/admin/applyList”;  

12.}

Handling paging parameters

 

Java code * * * * * * * *

1. protected extends VO> void addPageResultModel2(PageResult pct,Integer currentPage, Model model) {  

2.     model.addAttribute(“totalCount”, pct.getTotalCount());  

3.     model.addAttribute(“numPerPage”, Constant.DEFAULT_PAGE_SIZE);  

4.     model.addAttribute(“pageNum”, currentPage);  

5.     model.addAttribute(“pageNumShown”, pct.getPageCount(pct.getTotalCount(), Constant.DEFAULT_PAGE_SIZE));  

6.     model.addAttribute(“currentPage”, currentPage);  

7.     model.addAttribute(“itemList”, pct.getPageResultList());  

8.}

3) Entity classes

Java code * * * * * * * *

1. @NamedNativeQueries  

2. (  

3.     {  

4.        @NamedNativeQuery(  

5.            name=”ReturnTrainAppyUser”,  

6.            query=” select a.id as apply_id,b.id as plan_id,b.title as plan_title,(select count(c.id) from train_apply_user c where c.APPLY_ID=a.ID) as ‘apply_user_num’,a.company as ‘apply_company’ from train_apply a inner join train_plan b on b.ID=a.PLAN_ID”,  

7.            resultSetMapping=”ReturnTrainAppyUser”),  

8.}

9.)

10. @SqlResultSetMappings(  

11. {  

12.     @SqlResultSetMapping  

13.     (  

14.        name=”ReturnTrainAppyUser”,  

15.        entities={},  

16.        columns=  

17.        {  

18.            @ColumnResult(name=”apply_id”),  

19.            @ColumnResult(name=”plan_id”),  

20.            @ColumnResult(name=”plan_title”),  

21.            @ColumnResult(name=”apply_user_num”),  

22.            @ColumnResult(name=”apply_company”)  

23.}

24.)

25.})

26. @Entity  

27. @Table(name = “train_apply”)  

28. public class TrainApply extends VO {  

29.     private static final long serialVersionUID = -6530604520661376764L;  

30.     @Id  

31.     @GeneratedValue(strategy = GenerationType.IDENTITY)  

32. private Long id; // ID

33. private Long planId; ID / / plan

34. private String orgName; // Unit name

35. private String roomType; // Room type

36. private String roomNumber; / / rooms

37. private String invoiceType; // Type of invoice

38. private String status; / / state

39.       

40.       

41.       

42.     public Long getId() {  

43.         return id;  

44.}

45.     public void setId(Long id) {  

46.         this.id = id;  

47.}

48.     public Long getPlanId() {  

49.         return planId;  

50.}

51.     public void setPlanId(Long planId) {  

52.         this.planId = planId;  

53.}

54.     public String getOrgName() {  

55.         return orgName;  

56.}

57.     public void setOrgName(String orgName) {  

58.         this.orgName = orgName;  

59.}

60.     public String getRoomType() {  

61.         return roomType;  

62.}

63.     public void setRoomType(String roomType) {  

64.         this.roomType = roomType;  

65.}

66.     public String getRoomNumber() {  

67.         return roomNumber;  

68.}

69.     public void setRoomNumber(String roomNumber) {  

70.         this.roomNumber = roomNumber;  

71.}

72.     public String getInvoiceType() {  

73.         return invoiceType;  

74.}

75.     public void setInvoiceType(String invoiceType) {  

76.         this.invoiceType = invoiceType;  

77.}

78.     public String getStatus() {  

79.         return status;  

80.}

81.     public void setStatus(String status) {  

82.         this.status = status;  

83.}

84.       

85.}

4) Page processing the next article

To be continued! ————————————————-