Springboot Mybatis 맞춤 주문 정렬 쿼리, 필드 지정

머리말

이 글과 무관

 "나는 ~ 안에있다" ….

텍스트

오늘은 무슨 이야기를 할까요? 


사실 매우 간단합니다.데이터를 쿼리할 때 지정한 필드의 사용자 지정 순서에 따라 데이터를 정렬하고 쿼리하려고 합니다.


이 기사에서 다룰 몇 가지 사항은 다음과 같습니다.

1. 순수 sql로 정렬하는 방법
2. 순수 sql로 커스텀 정렬하는 방법
3. java와 결합하여 정렬하는 방법
4. mybatis와 결합하여 포인트 2의 정렬 sql을 사용하는 방법
 

말하는 과정이 순조롭지 않을 수 있습니다.

놀다

먼저 예제 테이블을 살펴보십시오.
 

제품 제품 테이블

예시 데이터:
 

정렬, 오름차순 정렬 또는 내림차순 정렬은 매우 간단합니다. 

 예를 들어:  

SELECT * FROM 제품 ORDER BY id DESC ;

그래서 아이디로 정렬이 안된다는 요구사항이 있다면 제품명으로 정렬을 해야하는데 어떻게 처리해야 할까요?

예를 들어 이 고정 순서를 지정하면 다음과 같습니다.

 먼저 기존 방식을 비교합니다.
 

 ① 정렬 기준 정렬 필드 순서 추가

 ② 시퀀스 구성 테이블 연결 테이블 쿼리 추가

죄송하지만 이 두 가지 방법은 너무 일반적이므로 이 기사에서는 다루지 않겠습니다.

현재 요구 사항은 조금 더 엄격하며 시계 구조를 만질 수 없습니다.

무엇을 해야 합니까? 

사용 ORDER BY FIELD

예:

  SELECT * FROM 제품 ORDER BY FIELD(이름,'비스킷','책','체스','잉크','펜','종이');

sql의 관점에서 당분간은 이렇게 해도 괜찮습니다. 

그래서 내가 말한 것이 지금 Java springboot mybatis를 사용하여 기능적 요구 사항을 작성하고 있다면 사용자 지정 주문을 해결하는 방법은 무엇입니까?

① 정상적으로 데이터를 찾은 다음 변수를 반복하여 제품명에 따라 데이터를 세척합니다.

일상적인 작업, 소개 없음.

② 우리가 일반적으로 사용하는 mybatis를 통해, 즉 매개 변수를 전달한 다음 SQL 쿼리를 실행하여 달성합니다.

즉, 이 SQL을 실행하는 것입니다.

SELECT * 
  
FROM 제품 
  
ORDER BY FIELD(이름,'비스킷','책','체스','잉크','펜','종이');

간단하게 작성하세요. 매퍼:
 

/**
 * @author JCccc
 */
@Mapper
public interface ProductMapper {
   
   List<Product> queryProductList(@Param("nameSortList") List<String> regularNameSortList);
   
}

매퍼.xml:
 

    <!--查询-->
    <select id="queryProductList" resultMap="BaseResultMap">
        SELECT
         ID,NAME,STATUS
        FROM product
        <if test="nameSortList != null and nameSortList.size >0  ">
            ORDER BY FIELD
            <foreach collection="nameSortList" item="name" open="(NAME," separator="," close=")">
                #{name}
            </foreach>
        </if>
    </select>

통화 예:


 결과는 정상입니다.


세부 사항에 주의:
 

자, 이 글은 여기까지입니다.

Supongo que te gusta

Origin blog.csdn.net/qq_35387940/article/details/131415503
Recomendado
Clasificación