NutzCN Logo
问答 想问一下query如果传入的是表名, 返回数据的字段名为什么都要转小写?
发布于 1801天前 作者 Veev 1570 次浏览 复制 上一个帖子 下一个帖子
标签:

想问一下query如果传入的是表名而不是实体类, 返回数据的字段名为什么都要转小写?
本身就是这样设计的还是我用法有问题呢?

4 回复

不知道
估计 字段直接传入数据库拼接成SQL
写个工具类就可以把它转成字段名

    public static String javaToTable(String tableName)
    {

        StringBuilder builder = new StringBuilder(tableName);
        Matcher mc = p.matcher(tableName);
        int i = 0;
        while (mc.find()) {
//            System.out.println(builder.toString());
//            System.out.println("mc.start():" + mc.start() + ", i: " + i);
//            System.out.println("mc.end():" + mc.start() + ", i: " + i);
            builder.replace(mc.start() + i, mc.end() + i, "_" + mc.group().toLowerCase());
            i++;
        }
        if ('_' == builder.charAt(0)) {
            builder.deleteCharAt(0);
        }
        return builder.toString();
    }

返回的Record类有原有大小写的key map

看到了

public Map<String, Object> sensitive() {
        NutMap map = new NutMap();
        for (String key : keys) {
            map.put(key, get(key));
        }
        return map;
    }

写了一个 Castor , 想把 Record 转成 Map, 用Castor 的原因是应为工程里有个统一的Response的处理.
但是, 因为Record本身就是个Map, Castor里向上转型是这样:

if (toType.isAssignableFrom(fromType))
            return (T) src;

根本不会走到自定义的Castor里.
所以 得把 Castors改成 Record -> NutMap

public static class RecordMapCastor extends Castor<Record, NutMap> {

        @Override
        public NutMap cast(Record src, Class<?> toType, String... args)
                throws FailToCastObjectException {
            return (NutMap) src.sensitive();
        }
    }
添加回复
请先登陆
回到顶部