MySQL의 쿼리 데이터베이스 테이블 필드 목록 정보를 동적으로 분류

MySQL의 쿼리 데이터베이스 테이블 필드 목록 정보를 동적으로 분류


 

배경 설명

데이터 아이템리스트 표시 페이지는, 전단에 사용 표 컴포넌트 각 컬럼에 관해서 이 페이지 데이터 행한다 오름차순 또는 내림차순 정렬.

그러나 고객의 기대는 : 무작위로 열을 클릭 경우 에 쿼리 모든 데이터를 정렬 할 수 있습니다.

 

예를 들면 :

 

(100) 10 페이지 10 페이지, 데이터를 조회 할 수 있습니다. 표 프론트 엔드 어셈블리는이 페이지의 데이터를 10 월, 정렬, 정렬 다른 구에 참여하지 않습니다.

그러나 실제 기대는 정렬에 참여하는 (10)의 데이터를 쿼리하는 것입니다.

그리고 특정 열 아니라, 각 열은 오름차순 또는 내림차순으로 할 수있다, 쿼리의 결과를 다시 정렬 할 수 있습니다.


 

치료

때문에 프런트 엔드 기술, 백엔드 처리를 위해 필요, 쿼리 인터페이스의 제한 목록을 수정합니다.

1, 쿼리의 개체 클래스를 수정

먼저 요청하는 개체를 쿼리해야, 두 개의 추가 필드 orderField OrderType , 필드 이름 및 들어오는 분류 모드를 저장 (ASC를 오름차순, DESC 내림차순)에 대한

orderField는 : 정렬 할 필드를 수신하기위한 수단

orderType는 : 정렬, ASC, DESC, 오름차순, 내림차순의 수신 모드

다음과 같이 코드입니다 :

    // 对字段进行排序
    개인 문자열 orderField;    // 存放排序字段
    개인 문자열 orderType;     // ASC의 DESC 

    공공 문자열 getOrderField는 () {
         반환 orderField을; 
    } 

    공공  공극 setOrderField (문자열 orderField) {
          .orderField = orderField; 
    } 

    공공 문자열 getOrderType는 () {
         반환 orderType을; 
    } 

    공공  공극 setOrderType (문자열 orderType) {
          .orderType = orderType; 
    }

 

2, 파일 mapper.xml을 수정

MyBatis로는 방법의 목록에서 매퍼 파일, SQL 쿼리를 찾을 수 있습니다.

다음 코드를 추가합니다 :

< 만약 테스트 = "orderField ! =  null이   orderField ! =  ''   orderType ! =  null이   orderType ! =  '' " > 
  ORDER  BY $ {orderField} $ {orderType} 
 </ 경우 >

[참고] 특히 : SQL의 두 개의 매개 변수, 여기 사용해야합니다 {}는 $  접수를하지만, 사용할 수 없습니다 #을 {} . 그렇지 않으면 원하는 효과에 도달하지 않습니다.

$ {} : 입력 문자열을 처리하지 않습니다 . 예를 들어 : 수신 및 CREATE_TIME 내림차순, 치료 효과 후 $는 {} 주문이 CREATE_TIME 내림차순에 의해입니다 역순 CREATE_TIME 전계 효과로 구현 될 수있다.

# {} : 그것은 들어오는 문자열을 처리합니다 . 예를 들어 : 수신 및 CREATE_TIME 내림차순, 치료 효과 후 #은 {} ORDER은 'CREATE_TIME' '내림차순'에 의해입니다문자열 상수가 CREATE_TIME 전계 효과에 따라 역순에 도달하지 않으므로.

물론, $는 {} SQL 주입 될 수 있습니다. 일반적으로, #은 {}로 사용된다. 이 시나리오는 변환 값에 전달 될 필요가 없습니다, $는 {} 사용됩니다.

기능 제목을 실현하기 위해, 단지 $ {}에만이 기능을 사용합니다.

 

3, 인터페이스를 증가 시키면 필드 호출

경우 기준 송신 증가  orderField  및  OrderType , 이하의 효과

{
     "pageNum"1 ,
     "pageSize가"5 ,
     " orderField ": "CREATE_TIME" ,
     " orderType ": "소계" 
}

 

 

지금까지,이 함수는 입력 필드의 이름으로 주문하고 종류 깨달았다.

 

추천

출처www.cnblogs.com/miracle-luna/p/11360117.html