| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- package com.poyee.base.mapper.provider;
- import com.poyee.base.dto.BaseDto;
- import com.poyee.base.dto.BaseReq;
- import com.poyee.base.dto.Page;
- import com.poyee.base.mapper.provider.domain.MPage;
- import com.poyee.util.ObjectUtil;
- import org.apache.ibatis.annotations.*;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- /**
- * @param <T>
- * @param <R>
- */
- public interface IBaseProvider<T extends BaseReq, R extends BaseDto> {
- @SelectProvider(type = FinalProviderSql.class, method = "leftJoinWrapper")
- List<Map<String, Object>> selectListMap(@Param("req") T req, @Param("clazz") Class<R> clazz);
- @SelectProvider(type = FinalProviderSql.class, method = "leftJoinWrapper")
- List<Map<String, Object>> selectListMapByReq(@Param("req") T req, @Param("clazz") Class<T> clazz);
- @SelectProvider(type = FinalProviderSql.class, method = "pageCountSql")
- long pageCount(String sql);
- @SelectProvider(type = FinalProviderSql.class, method = "pageSql")
- List<Map<String, Object>> page(String sql);
- @SelectProvider(type = FinalProviderSql.class, method = "selectOne")
- Map<String, Object> selectOneMap(@Param("req") T req, @Param("clazz") Class<R> clazz);
- @SelectProvider(type = FinalProviderSql.class, method = "selectById")
- Map<String, Object> selectByIdMap(@Param("id") Serializable id, @Param("clazz") Class<R> clazz);
- @SelectProvider(type = FinalProviderSql.class, method = "selectSum")
- Map<String, Object> selectSumMap(@Param("req") T req, @Param("clazz") Class<R> clazz);
- @InsertProvider(type = FinalProviderSql.class, method = "save")
- @Options(useGeneratedKeys = true, keyProperty = "id")
- // @SelectKey(statement = "select max(id) from promotion_share_info", keyProperty = "id", before = false, resultType = Long.class)
- int save(T req);
- @UpdateProvider(type = FinalProviderSql.class, method = "update")
- int update(T req);
- /**
- * @param id
- * @return
- */
- default R selectByPrimaryKey(Serializable id, Class<R> clazz) {
- Map<String, Object> resultMaps = selectByIdMap(id, clazz);
- if (resultMaps != null && !resultMaps.isEmpty()) {
- return ObjectUtil.mapToBeanProvider(resultMaps, clazz);
- }
- try {
- return clazz.newInstance();
- } catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * @param clazz
- * @param req
- * @return
- */
- default R selectOne(T req, Class<R> clazz) {
- Map<String, Object> resultMaps = selectOneMap(req, clazz);
- if (resultMaps != null && !resultMaps.isEmpty()) {
- return ObjectUtil.mapToBeanProvider(resultMaps, clazz);
- }
- try {
- return clazz.newInstance();
- } catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 求和
- * @param req
- * @param clazz
- * @return
- */
- default R sum(T req, Class<R> clazz){
- Map<String, Object> resultMaps = selectSumMap(req, clazz);
- if (resultMaps != null && !resultMaps.isEmpty()) {
- return ObjectUtil.mapToBeanProvider(resultMaps, clazz);
- }
- try {
- return clazz.newInstance();
- } catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * @param req
- * @param clazz
- * @return
- */
- default List<R> selectList(T req, Class<R> clazz) {
- List<Map<String, Object>> resultMaps = selectListMap(req, clazz);
- if (resultMaps != null && resultMaps.size() > 0) {
- return ObjectUtil.mapToListProvider(resultMaps, clazz);
- }
- return new ArrayList<>();
- }
- /**
- * @param req
- * @param clazz
- * @return
- */
- default Page<R> selectPage(T req, Class<R> clazz) {
- MPage<R> mPage = new FinalProviderSql().mPage(req, clazz);
- long total = pageCount(mPage.getCountSql());
- List<R> records = null;
- if (total > 0) {
- List<Map<String, Object>> pageMaps = page(mPage.getPageSql());
- records = ObjectUtil.mapToListProvider(pageMaps, clazz);
- }
- return new Page<>(total, records).setPage((long) req.getPageNo());
- }
- /**
- * 拼接sql
- */
- class FinalProviderSql extends BaseProvider {
- /**
- * @param sql
- * @return
- */
- public String pageCountSql(String sql) {
- return sql;
- }
- /**
- * @param sql
- * @return
- */
- public String pageSql(String sql) {
- return sql;
- }
- }
- }
|