runsql

CustomSqlMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.runshi.runshi.cms.mapper.CustomSqlMapper">
	<select id="runPageSql" resultType="java.util.Map"  parameterType="java.lang.String">
		${sqlStr}
	</select>
	<select id="runListSql" resultType="java.util.Map"  parameterType="java.lang.String">
		${sqlStr}
	</select>
	<select id="runSingleSql" resultType="java.util.Map"  parameterType="java.lang.String">
		${sqlStr}
	</select>
</mapper>

CustomSqlMapper

@Mapper
public interface CustomSqlMapper extends RunshiBaseMapper<CmsArticleCategory> {

	IPage<Map<String, Object>> runPageSql(Page page, @Param(value="sqlStr") String sqlStr);

	List<Map<String, Object>> runListSql(@Param(value="sqlStr") String sqlStr);

	Map<String, Object> runSingleSql(@Param(value="sqlStr") String sqlStr);
}

CustomSqlService

public interface CustomSqlService extends IService<CmsArticleCategory> {

	IPage<Map<String, Object>> runPageSql(Page page, String sqlStr);

	List<Map<String, Object>> runListSql(String sqlStr);

	Map<String, Object> runSingleSql(String sqlStr);
}

CustomSqlServiceImpl

@Service
public class CustomSqlServiceImpl extends ServiceImpl<CustomSqlMapper, CmsArticleCategory> implements CustomSqlService {

	@Override
	public IPage runPageSql(Page page, String sqlStr) {
		IPage dataList = baseMapper.runPageSql(page, sqlStr);

		//dataList.getRecords()
		List<Map<String,Object>> lst = new ArrayList<>();
		lst =dataList.getRecords();

		dataList.setRecords(lst.stream().map(MapUtil::toCamelCaseMap).collect(Collectors.toList()));
		return dataList;
	}

	@Override
	public List<Map<String, Object>> runListSql(String sqlStr) {
		return GetListMap(baseMapper.runListSql(sqlStr));
	}

	@Override
	public Map<String, Object> runSingleSql(String sqlStr) {
		if (sqlStr.indexOf(" limit ") == -1) {
			sqlStr += " limit 1 ";
		}
		return getUnderToHump(baseMapper.runSingleSql(sqlStr));
	}

	private List<Map<String, Object>> GetListMap(List<Map<String, Object>> lst){
		List<Map<String, Object>> lstMap = new ArrayList<>();

		for(int i=0;i<lst.size();i++){
			lstMap.add(getUnderToHump(lst.get(i)));
		}
		return  lstMap;
	}

	private Map<String, Object> getUnderToHump(Map<String, Object> map) {
		if (Objects.isNull(map)) {
			return map;
		}
		List<Map.Entry<String, Object>> list = map.entrySet().stream().collect(Collectors.toList());
		Map<String, Object> paramMap = new HashMap<>();
		for (Map.Entry<String, Object> entry : list) {
			if (entry.getKey().indexOf("_") == -1) {
				Object value = getValue(entry);
				paramMap.put(entry.getKey(), value);
				continue;
			}
			String[] split = entry.getKey().split("_");
			StringBuilder result = new StringBuilder();
			result.append(split[0]);
			for (int i=1;i<split.length;i++) {
				result.append(split[i].substring(0,1).toUpperCase()).append(split[i].substring(1));
			}
			paramMap.put(result.toString(), getValue(entry));
		}
		return paramMap;
	}

	private Object getValue(Map.Entry<String, Object> entry) {
		Object value = entry.getValue();
		if (entry.getValue() instanceof List) {
			List listValue =(List) entry.getValue();
			List result = new ArrayList();
			for (Object o: listValue) {
				Object convert = null;
				if (o instanceof Map) {
					Map mapList =(Map) o;
					convert = getUnderToHump(mapList);
				}
				if (o instanceof Long) {
					convert = String.valueOf(o);
				}
				result.add(convert);
			}
			value = result;
		}
		if (entry.getValue() instanceof Map) {
			Map linkedHashMap =(Map) entry.getValue();
			value = getUnderToHump(linkedHashMap);
		}
		if (entry.getValue() instanceof JsonArray) {
			JsonArray value1 = (JsonArray) entry.getValue();
			JsonArray transValue  = new JsonArray();
			for (JsonElement o:value1) {
				if (o instanceof JsonObject) {
					JsonObject jsonObject =  o.getAsJsonObject();
					Map underToHump = getUnderToHump(new Gson().fromJson(jsonObject.toString(), Map.class));
					transValue.add(JsonParser.parseString(new Gson().toJson(underToHump)));
				} else {
					transValue.add(o.toString());
				}
			}
			value = transValue;
		}
		if (entry.getValue() instanceof JsonObject) {
			JsonObject jsonObject  = (JsonObject) entry.getValue();
			value = getUnderToHump( new Gson().fromJson(jsonObject.toString(),Map.class));
		}
		return value;
	}

}

相关推荐

  1. runsql

    2023-12-04 16:41:46       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-04 16:41:46       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-04 16:41:46       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-04 16:41:46       87 阅读
  4. Python语言-面向对象

    2023-12-04 16:41:46       96 阅读

热门阅读

  1. 51单片机超声波测距

    2023-12-04 16:41:46       60 阅读
  2. Tekton pipelineruns 基础

    2023-12-04 16:41:46       53 阅读
  3. 10.27日

    2023-12-04 16:41:46       51 阅读
  4. 图论做题记录1

    2023-12-04 16:41:46       47 阅读
  5. [AGC063C] Add Mod Operations 题解

    2023-12-04 16:41:46       42 阅读
  6. Solution Set 2023.12.4

    2023-12-04 16:41:46       45 阅读
  7. mysql和Oracle 查询某个时间之内的数据

    2023-12-04 16:41:46       66 阅读
  8. 为什么stack和queue默认使用deque作为底层容器?

    2023-12-04 16:41:46       53 阅读
  9. sx

    sx

    2023-12-04 16:41:46      53 阅读
  10. CF1902 B Getting Points 题解

    2023-12-04 16:41:46       70 阅读
  11. .NET CORE架构分层

    2023-12-04 16:41:46       47 阅读
  12. Arkts build函数

    2023-12-04 16:41:46       54 阅读
  13. 浏览器中打开exe

    2023-12-04 16:41:46       57 阅读
  14. 前后端跨域问题

    2023-12-04 16:41:46       54 阅读
  15. c语言实现this指针效果

    2023-12-04 16:41:46       44 阅读
  16. [编程] 你真的会写函数注释?这里给你一个答案

    2023-12-04 16:41:46       48 阅读
  17. 上周热点回顾(11.27-12.3)

    2023-12-04 16:41:46       52 阅读
  18. 带团队后的日常思考(十三)

    2023-12-04 16:41:46       57 阅读