Confluence插件開發(fā) - 3 - MySQL數(shù)據(jù)如何操作

注:閱讀此篇時(shí)奴迅,請(qǐng)確保你的開發(fā)環(huán)境已經(jīng)正常配置,可以正常使用命令行工具創(chuàng)建插件demo

簡介

Confluence插件開發(fā)過程中需要保存一下常用配置數(shù)據(jù),如過配置信息不會(huì)修改可以直接保存到配置文件中饼灿,假設(shè)需要將部分?jǐn)?shù)據(jù)持久化保存,那就需要使用到數(shù)據(jù)庫厅克。

本篇說明Confluence后端使用Mysql數(shù)據(jù)庫情況下赔退,插件內(nèi)對(duì)表操作方法。

Mysql 插件表創(chuàng)建注意事項(xiàng)

官方DB設(shè)置文檔

參照上述文檔配置Confluence連接mysql证舟,需要注意的是

需要注意的是Mysql connector/J 驅(qū)動(dòng)包c(diǎn)onfluence沒有內(nèi)置硕旗,部署的時(shí)候需要自行增加jar包

詳細(xì)說明

創(chuàng)建表

在confluence連接的mysql中創(chuàng)建一個(gè)插件的表,舉例:

CREATE TABLE IF NOT EXISTS `plugin-demo-config` (
  `id` INT(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `user_name` VARCHAR(30) NOT NULL COMMENT '用戶姓名',
  `exattr` VARCHAR(512) DEFAULT NULL COMMENT '備注',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_s_uc` (`status`, `user_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '插件示例配置表';

建表語句中的charset需要根據(jù)confluence判斷是否有問題女责,
Confluence 7.3以及之后的版本漆枚,連接的MySQL版本在5.7.9以及之后的版本,表字符集可以使用utfmb8
Confluence 7.2以及更早版本抵知,連接Mysql5.6版本必須要使用utf8
為了保險(xiǎn)起見使用utf8

使用TransactionalExecutorFactory對(duì)象操作DB

  • 從confluence中獲取TransactionalExecutorFactory對(duì)象
  • 獲取Connection對(duì)象
  • 執(zhí)行sql語句

示例:
使用ComponentImport注解注入TransactionalExecutorFactory對(duì)象

@Scanned
public class VivoNotificationListener {
    private static final Logger LOGGER = LoggerFactory.getLogger(VivoNotificationListener.class);

    private TransactionalExecutorFactory executorFactory;

    @Autowired
    public VivoNotificationListener(@ComponentImport TransactionalExecutorFactory executorFactory,) {
        this.executorFactory = executorFactory;
    }
}

獲取Connection執(zhí)行sql

    public List<ConfigDao> getUserConfigFromDB() {
        List<ConfigDao> result = new LinkedList<>();
        // createReadOnly獲取只讀的connection墙基,如果需要讀寫connection 可以使用 create()
        TransactionalExecutor executor = this.executorFactory.createReadOnly();
        executor.execute(conn -> {
                    try {
                        String sql = "select id, user_name as userName, exattr from `plugin-demo-config`";
                        PreparedStatement statement = conn.prepareStatement(sql);
                        ResultSet rs = statement.executeQuery();

                        while (rs.next()) {
                            int id = rs.getInt(1);
                            String userName = rs.getString(2);
                            String exattr = rs.getString(3);
                            ConfigDao configDao = new ConfigDao();
                            configDao.setId(id);
                            configDao.setUserName(userName);
                            configDao.setExattr(exattr);
                            result.add(configDao);
                        }
                    } catch (SQLException e) {
                        LOGGER.error("UserService getUserConfig sql exception.", e);
                    }
                    return "";
                }
        );
        return result;
    }

示例代碼

https://github.com/chaoyz/plugin-demo

參考

Confluence Data Model
Database Setup For MySQL
Example Plugins That Access RDBMS

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市刷喜,隨后出現(xiàn)的幾起案子残制,更是在濱河造成了極大的恐慌,老刑警劉巖掖疮,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件初茶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡浊闪,警方通過查閱死者的電腦和手機(jī)恼布,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門螺戳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人折汞,你說我怎么就攤上這事倔幼。” “怎么了爽待?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵损同,是天一觀的道長。 經(jīng)常有香客問我鸟款,道長揖庄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任欠雌,我火速辦了婚禮,結(jié)果婚禮上疙筹,老公的妹妹穿的比我還像新娘富俄。我一直安慰自己,他們只是感情好而咆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布霍比。 她就那樣靜靜地躺著,像睡著了一般暴备。 火紅的嫁衣襯著肌膚如雪悠瞬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天涯捻,我揣著相機(jī)與錄音浅妆,去河邊找鬼。 笑死障癌,一個(gè)胖子當(dāng)著我的面吹牛凌外,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涛浙,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼康辑,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了轿亮?” 一聲冷哼從身側(cè)響起疮薇,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎我注,沒想到半個(gè)月后按咒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仓手,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年胖齐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玻淑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呀伙,死狀恐怖补履,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剿另,我是刑警寧澤箫锤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站雨女,受9級(jí)特大地震影響谚攒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氛堕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一馏臭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讼稚,春花似錦括儒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赠摇,卻和暖如春固逗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藕帜。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工烫罩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洽故。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓嗡髓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親收津。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饿这,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容