JAVA 实战 字典自动翻译

JAVA字典 自动翻译

(1) MySQL8 表结构

CREATE TABLE `sys_dict` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `type_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '字典类型编码',
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '字典项名称',
  `value` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '字典项值'
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=417 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='字典数据表';

(2) Mypper.xml

<select id="translateDictByKeys" resultType="com.wangyao.common.database.model.DictModel">
        select
        ${name} as "value",
        ${value} as "code"
        from sys_dict
        where ${value}
        IN (
        <foreach item="key" collection="keys" separator=",">
            #{key}
        </foreach>
        )
    </select>

    <select id="queryManyDictByKeys" resultType="com.wangyao.common.database.model.DictModelMany">
        SELECT
        item.type_code AS dictCode,
        item.name AS "value",
        item.value AS "code"
        FROM
        sys_dict item
        WHERE item.type_code IN (
        <foreach item="dictCode" collection="dictCodeList" separator=",">
            #{dictCode}
        </foreach>
        )
        AND item.value IN (
        <foreach item="key" collection="keys" separator=",">
            #{key}
        </foreach>
        )
    </select>

    <select id="translateAllDict" resultType="com.wangyao.common.database.model.DictModelMany">
        select
        type_code as "dictCode",
        name as "value",
        `value` as "code"
        from sys_dict
    </select>

(3) mapper 接口

/***
     * Desc:
     * @param name 字段名
     * @param value 值
     * @param keys keys
     * @return {@link List<DictModel>}
     * @author 01传说
     */
    List<DictModel> translateDictByKeys(@Param("name") String name, @Param("value") String value, @Param("keys") List<String> keys);

    /***
     * Desc:
     * @param dictCodeList 字典集合
     * @param keys keys
     * @return {@link List<DictModelMany>}
     * @author 01传说
     */
    List<DictModelMany> queryManyDictByKeys(@Param("dictCodeList") List<String> dictCodeList, @Param("keys") List<String> keys);

    /***
     * Desc:
     * @return {@link List<DictModelMany>}
     * @author 01传说
     */
    List<DictModelMany> translateAllDict();

(4)service实现接口

public interface BaseCommonService {
    /***
     * Desc:
     * @param text text
     * @param code code
     * @param values values
     * @return {@link List<DictModel>}
     * @author 01传说
     */
    List<DictModel> translateDictByKeys(String text, String code, String values);

    /***
     * Desc:
     * @param dictCodes dictCodes
     * @param values values
     * @return {@link Map<String,List<DictModel>>}
     * @author 01传说
     */
    Map<String, List<DictModel>> translateManyDict(List<String> dictCodes, List<String> values);

    /***
     * Desc:
     * @return {@link List<DictModelMany>}
     * @author 01传说
     */
    List<DictModelMany> queryManyDictByKeys();

(5)serviceImpl

@Service
@Slf4j
public class BaseCommonServiceImpl implements BaseCommonService {

    @Resource
    private BaseCommonMapper baseCommonMapper;

    @Override
    public List<DictModel> translateDictByKeys(String text, String code, String values) {
        return baseCommonMapper.translateDictByKeys(text,code, Collections.singletonList(values));
    }

    @Override
    public Map<String, List<DictModel>> translateManyDict(List<String> dictCodes, List<String> values) {
        List<DictModelMany> list = baseCommonMapper.queryManyDictByKeys(dictCodes, values);
        Map<String, List<DictModel>> dictMap = new HashMap<>(16);
        for (DictModelMany dict : list) {
            List<DictModel> dictItemList = dictMap.computeIfAbsent(dict.getDictCode(), i -> new ArrayList<>());
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

01传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值