第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 JOOQ 自定義綁定中生成 SQL 以填充 MySQL JSON 函數(shù)時(shí)訪問(wèn)字段名稱(chēng)或別名

在 JOOQ 自定義綁定中生成 SQL 以填充 MySQL JSON 函數(shù)時(shí)訪問(wèn)字段名稱(chēng)或別名

阿晨1998 2021-06-22 03:06:14
將 JOOQ 3.5.2 與 MySQL 5.7 一起使用,我正在嘗試完成以下任務(wù)...MySQL 有一組 JSON 函數(shù),允許對(duì)較大文檔中的屬性進(jìn)行路徑定向操作。我正在嘗試使用 JOOQ 進(jìn)行抽象,以利用這一點(diǎn)。我首先創(chuàng)建了 JSON 可序列化的文檔模型,它跟蹤更改,然后Binding為其實(shí)現(xiàn)了 JOOQ 自定義。在此綁定中,我擁有生成對(duì)這些 MySQL JSON 函數(shù)的調(diào)用所需的所有狀態(tài)信息,但要更新的列的限定名稱(chēng)或別名除外。就地更新現(xiàn)有 JSON 文檔需要對(duì)此名稱(chēng)的引用。我一直無(wú)法找到從ContextBinding 接口中可用的 *類(lèi)型訪問(wèn)此名稱(chēng)的方法。我一直在考慮實(shí)現(xiàn)一個(gè)VisitListener來(lái)捕獲這些字段名稱(chēng)并通過(guò)Scope自定義數(shù)據(jù)映射傳遞它們,但該選項(xiàng)似乎非常脆弱。在我的 Binding 實(shí)現(xiàn)中訪問(wèn)字段名稱(chēng)或別名的最佳方法是什么?- 編輯 -好的,為了幫助澄清我的目標(biāo),請(qǐng)使用以下 DDL:create table widget (  widget_id bigint(20) NOT NULL,  jm_data json DEFAULT NULL,  primary key (widget_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8現(xiàn)在讓我們假設(shè) jm_data 將保存 a 的 JSON 表示java.util.Map<String,String>。為此,JOOQ 通過(guò)實(shí)現(xiàn)和注冊(cè)自定義數(shù)據(jù)類(lèi)型綁定(在本例中使用 Jackson)提供了一個(gè)非常好的擴(kuò)展 API:public class MySQLJSONJacksonMapBinding implements Binding<Object, Map<String, String>> {    private static final ObjectMapper mapper = new ObjectMapper();    // The converter does all the work    @Override    public Converter<Object, Map<String, String>> converter() {        return new Converter<Object, Map<String, String>>() {            @Override            public Map<String, String> from(final Object t) {                try {                    return t == null ? null                            : mapper.readValue(t.toString(),                                    new TypeReference<Map<String, String>>() {                                    });                } catch (final IOException e) {                    throw new RuntimeException(e);                }            }            @Override            public Object to(final Map<String, String> u) {                try {                    return u == null ? null                            : mapper.writer().writeValueAsString(u);                } catch (final JsonProcessingException e) {                    throw new RuntimeException(e);                }            }
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 293 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)