All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.mybatisplus.binding.helper.ServiceAdaptor Maven / Gradle / Ivy

There is a newer version: 1.6.8
Show newest version
package org.zodiac.mybatisplus.binding.helper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

import org.zodiac.commons.constants.DatabaseConstants;
import org.zodiac.mybatisplus.base.BaseService;
import org.zodiac.mybatisplus.binding.cache.BindingCacheManager;
import org.zodiac.mybatisplus.binding.parser.EntityInfoCache;
import org.zodiac.mybatisplus.model.MyBatisPlusPagination;
import org.zodiac.mybatisplus.util.MyBatisPlusUtil;

/**
 * Service适配器。
 * 
 */
public class ServiceAdaptor {

    public static  E getSingleEntity(IService iService, QueryWrapper queryWrapper) {
        if (iService instanceof BaseService) {
            BaseService baseService = (BaseService)iService;
            return (E)baseService.getSingleEntity(queryWrapper);
        } else {
            return (E)iService.getOne(queryWrapper);
        }
    }

    public static  List queryList(IService iService, QueryWrapper queryWrapper) {
        if (iService instanceof BaseService) {
            BaseService baseService = (BaseService)iService;
            return (List)baseService.getEntityList(queryWrapper);
        } else {
            return iService.list(queryWrapper);
        }
    }

    public static  List queryList(IService iService, QueryWrapper queryWrapper, MyBatisPlusPagination myBatisPlusPagination,
        Class entityClass) {
        if (iService instanceof BaseService) {
            BaseService baseService = (BaseService)iService;
            return (List)baseService.getEntityList(queryWrapper, myBatisPlusPagination);
        } else {
            if (queryWrapper.getEntityClass() == null) {
                queryWrapper.setEntityClass(entityClass);
            }
            if (myBatisPlusPagination != null) {
                IPage page = convertToIPage(myBatisPlusPagination, entityClass);
                page = iService.page(page, queryWrapper);
                /*如果重新执行了count进行查询,则更新pagination中的总数*/
//                if (page.searchCount()) {
//                    pagination.setTotalCount(page.getTotal());
//                }
                myBatisPlusPagination.setTotalCount(page.getTotal());
                return page.getRecords();
            } else {
                return iService.list(queryWrapper);
            }
        }
    }

    public static  Page convertToIPage(MyBatisPlusPagination myBatisPlusPagination, Class entityClass) {
        if (myBatisPlusPagination == null) {
            return null;
        }
        /*如果是默认id排序*/
        if (myBatisPlusPagination.isDefaultOrderBy()) {
            /*优化排序*/
            String pk = MyBatisPlusUtil.getIdFieldName(entityClass);
            /*主键非有序id字段,需要清空默认排序以免报错*/
            if (!DatabaseConstants.ConventionalFields.id.name().equals(pk)) {
                myBatisPlusPagination.clearDefaultOrder();
                /*设置时间排序*/
                EntityInfoCache entityInfoCache = BindingCacheManager.getEntityInfoByClass(entityClass);
                if (entityInfoCache.containsColumn(DatabaseConstants.COLUMN_CREATE_TIME)) {
                    myBatisPlusPagination.setDefaultCreateTimeOrderBy();
                }
            }
        }
        return myBatisPlusPagination.setEntityClass(entityClass).toPage();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy