Browse Source

+ mybatis 返回map对象键也可以驼峰,需配置开关 mapUnderscoreToCamelCase
+ 标签多语言配置接口,如果需要新增新语种只需要增加多语言字段,例如en,sys_dic_data表新增字段 dict_label_en

chen.cheng 5 months ago
parent
commit
8f165e5019

+ 18 - 0
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/CustMybatisCfg.java

@@ -0,0 +1,18 @@
+package com.huashe.park.application.mybatis;
+
+import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class CustMybatisCfg {
+    @Bean
+    public ConfigurationCustomizer mybatisConfigurationCustomizer(){
+        return new ConfigurationCustomizer() {
+            @Override
+            public void customize(org.apache.ibatis.session.Configuration configuration) {
+                configuration.setObjectWrapperFactory(new MapWrapperFactory());
+            }
+        };
+    }
+}

+ 23 - 0
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/CustomWrapper.java

@@ -0,0 +1,23 @@
+package com.huashe.park.application.mybatis;
+
+import java.util.Map;
+
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.wrapper.MapWrapper;
+
+import cn.hutool.core.util.StrUtil;
+
+public class CustomWrapper extends MapWrapper {
+
+    public CustomWrapper(MetaObject metaObject, Map<String, Object> map) {
+        super(metaObject, map);
+    }
+
+    @Override
+    public String findProperty(String name, boolean useCamelCaseMapping) {
+        if (useCamelCaseMapping) {
+            return StrUtil.toCamelCase(name);
+        }
+        return name;
+    }
+}

+ 20 - 0
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/MapWrapperFactory.java

@@ -0,0 +1,20 @@
+package com.huashe.park.application.mybatis;
+
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.wrapper.ObjectWrapper;
+import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
+
+import java.util.Map;
+
+public class MapWrapperFactory implements ObjectWrapperFactory {
+
+    @Override
+    public boolean hasWrapperFor(Object object) {
+        return object != null && object instanceof Map;
+    }
+
+    @Override
+    public ObjectWrapper getWrapperFor(MetaObject metaObject, Object object) {
+        return new CustomWrapper(metaObject,(Map)object);
+    }
+}

+ 4 - 3
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/mybatis/RegisterCustomerInterceptor.java

@@ -1,13 +1,13 @@
 package com.huashe.park.application.mybatis;
 
+import java.util.List;
+
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-
 @Component
 public class RegisterCustomerInterceptor implements ApplicationListener<ContextRefreshedEvent> {
     /**
@@ -22,8 +22,9 @@ public class RegisterCustomerInterceptor implements ApplicationListener<ContextR
     @Override
     public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
         for (SqlSessionFactory factory : sqlSessionFactories) {
-            //由于mybatis拦截器使用责任链模式,有可能会导致自定义拦截器失效,因此下面方法可以将自定义拦截器重新注入到sql中
+            // 由于mybatis拦截器使用责任链模式,有可能会导致自定义拦截器失效,因此下面方法可以将自定义拦截器重新注入到sql中
             factory.getConfiguration().addInterceptor(mybatisInterceptor);
+            factory.getConfiguration().setObjectWrapperFactory(new MapWrapperFactory());
         }
     }
 }

+ 44 - 0
bd-park/park-backend/park-application/src/main/java/com/huashe/park/application/web/controller/system/SysCustDictDataController.java

@@ -0,0 +1,44 @@
+package com.huashe.park.application.web.controller.system;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.huashe.common.domain.AjaxResult;
+import com.huashe.common.utils.StringUtils;
+import com.huashe.park.core.service.ISysCustDictDataService;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.controller.BaseController;
+
+/**
+ * 数据字典信息
+ *
+ * @author ruoyi
+ */
+@RestController
+@RequestMapping("/system/cust/dict/data")
+public class SysCustDictDataController extends BaseController {
+
+    @Autowired
+    private ISysCustDictDataService dictTypeService;
+
+    /**
+     * 根据字典类型查询字典数据信息
+     */
+    @GetMapping(value = "/type/{dictType}")
+    @Anonymous
+    public AjaxResult dictType(@PathVariable String dictType) {
+        List<Map> data = dictTypeService.selectDictDataList(dictType);
+        if (StringUtils.isNull(data)) {
+            data = new ArrayList<>();
+        }
+        return success(data);
+    }
+
+}

+ 26 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/SysCustDictDataMapper.java

@@ -0,0 +1,26 @@
+package com.huashe.park.core.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.huashe.common.annotation.DataSource;
+import com.huashe.common.enums.DataSourceType;
+
+/**
+ * 字典表 数据层
+ * 
+ * @author ruoyi
+ */
+@DataSource(DataSourceType.MASTER)
+public interface SysCustDictDataMapper {
+    /**
+     * 根据条件分页查询字典数据
+     * 
+     * @param dictData 字典数据信息
+     * @return 字典数据集合信息
+     */
+    public List<Map> selectDictDataList(@Param("dictType") String dictType);
+
+}

+ 14 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/ISysCustDictDataService.java

@@ -0,0 +1,14 @@
+package com.huashe.park.core.service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 字典 业务层
+ * 
+ * @author ruoyi
+ */
+public interface ISysCustDictDataService {
+    public List<Map> selectDictDataList(String dictType);
+
+}

+ 32 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/service/impl/SysCustDictDataServiceImpl.java

@@ -0,0 +1,32 @@
+package com.huashe.park.core.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.huashe.park.core.mapper.SysCustDictDataMapper;
+import com.huashe.park.core.service.ISysCustDictDataService;
+
+/**
+ * 字典 业务层处理
+ * 
+ * @author ruoyi
+ */
+@Service
+public class SysCustDictDataServiceImpl implements ISysCustDictDataService {
+    @Autowired
+    private SysCustDictDataMapper dictDataMapper;
+
+    /**
+     * 根据条件分页查询字典数据
+     * 
+     * @param dictData 字典数据信息
+     * @return 字典数据集合信息
+     */
+    @Override
+    public List<Map> selectDictDataList(String dictType) {
+        return dictDataMapper.selectDictDataList(dictType);
+    }
+}

+ 19 - 0
bd-park/park-backend/park-core/src/main/resources/mapper/sys/SysCustDictDataMapper.xml

@@ -0,0 +1,19 @@
+<?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.huashe.park.core.mapper.SysCustDictDataMapper">
+
+	
+	<sql id="selectDictDataVo">
+        select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark 
+		from sys_dict_data
+    </sql>
+
+	<select id="selectDictDataList" resultType="java.util.Map">
+        select *
+        from sys_dict_data
+        where dict_type = #{dictType}
+        order by create_time desc, dict_sort asc
+    </select>
+</mapper>