從零搭建數(shù)據(jù)持久層(一) powerdesigner的使用

近段時間學(xué)習(xí)了mybatis和spring。那么我們需要通過實(shí)踐來認(rèn)證自己的知識掌握度雹顺。當(dāng)然也是說一種自己對于數(shù)據(jù)持久層的開發(fā)想法停团。


準(zhǔn)備工作

所使用到的工具:
1 idea 2018.1.1
2 Navicat premium 12
3 mysql 5.6 64位
4 powerdesigner16.5 64位
5 ODBC 64位
所使用到的包:

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.18</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

數(shù)據(jù)庫設(shè)計

首先我們需要根據(jù)系統(tǒng)需求來設(shè)計我們的數(shù)據(jù)医男。我根據(jù)自己的系統(tǒng)需求設(shè)計的數(shù)據(jù)庫随闪。我使用powerdesigner做概念數(shù)據(jù)模型(CDM) 和物理數(shù)據(jù)模型(PDM) 。

CDM設(shè)計圖.png
物理數(shù)據(jù)概念模型.png

概念數(shù)據(jù)模型注意的點(diǎn)

1.概念數(shù)據(jù)模型里面什么該寫闷堡?什么不該寫隘膘?

百度百科給的定義:概念模型表征了待解釋的系統(tǒng)的學(xué)科共享知識。為了把現(xiàn)實(shí)世界中的具體事物抽象杠览、組織為某一數(shù)據(jù)庫管理系統(tǒng)支持的數(shù)據(jù)模型弯菊,人們常常首先將現(xiàn)實(shí)世界抽象為信息世界,然后將信息世界轉(zhuǎn)換為機(jī)器世界踱阿。也就是說管钳,首先把現(xiàn)實(shí)世界中的客觀對象抽象為某一種信息結(jié)構(gòu),這種信息結(jié)構(gòu)并不依賴于具體的計算機(jī)系統(tǒng)软舌,不是某一個數(shù)據(jù)庫管理系統(tǒng)(DBMS)支持的數(shù)據(jù)模型才漆,而是概念級的模型,稱為概念模型佛点。

概念數(shù)據(jù)模型就是將客觀的對象抽象為某一種信息結(jié)構(gòu)醇滥,千萬不要把所謂的外鍵,放到從表里面超营。一個實(shí)體它本身該有什么屬性鸳玩,你就寫什么屬性。才開始用powerdesigner的人很容易出現(xiàn)這種錯誤糟描。比如我設(shè)計的表中怀喉,學(xué)生和記錄,如果我將學(xué)號放入體測記錄表中的話船响,然后設(shè)置一對多屬性,一會直接生成的pdm就會出現(xiàn)重復(fù)屬性躲履。

在mysql中沒有大寫這么一說见间,所以我們最好是使用下劃線來分開單詞,也是為了一會能夠通過mybatis直接將下劃線轉(zhuǎn)為駝峰式命名工猜。更多的命名規(guī)則可以看mysql命名規(guī)范 阿里云米诉,里面有更多的設(shè)計規(guī)范。
表名和描述:
名字用中文篷帅,代碼用英文史侣。

image.png

比如我的學(xué)生表:


學(xué)生.png

2.設(shè)置參數(shù)

根據(jù)規(guī)范,我們最好將我們的字段設(shè)置為not null非空拴泌,設(shè)置好默認(rèn)值。這里的設(shè)置方法如下:
雙擊實(shí)體進(jìn)入該entity properties窗口:

entity properties.png

用光標(biāo)選中你要設(shè)置的字段惊橱,按住alt+enter就有更多的設(shè)置:
image.png

然后我們點(diǎn)擊standard checks


image.png

在default這一欄里面蚪腐,我們就可以設(shè)置默認(rèn)值。ok

生成pdm文件

其實(shí)可以通過cdm直接生成pdm文件税朴,但是需要注意的是在生成pdm之前最好把錯誤回季,和警告排除了。最常見的是重復(fù)名字了正林。

當(dāng)我寫文章的時候泡一,錯誤已經(jīng)被我干掉了,emmm觅廓,所以~~~~鼻忠。直接生成pdm,快捷鍵ctrl+shift+p,沒有就直接生成杈绸,有的話選擇更新帖蔓,確定就好。

設(shè)計物理數(shù)據(jù)模型注意點(diǎn)

這里十分關(guān)鍵S蕖讨阻!因?yàn)橐粫何覀兪峭ㄟ^odbc直接將物理數(shù)據(jù)模型導(dǎo)入數(shù)據(jù)庫,如果這里有什么奇怪的問題篡殷,直接的結(jié)果就是導(dǎo)入的數(shù)據(jù)庫不完整钝吮。

重新檢查物理數(shù)據(jù)模型,調(diào)整一些參數(shù)

根據(jù)自己選擇的數(shù)據(jù)對某些參數(shù)類型需要修改板辽。比如我只是需要年份year這個mysql 類型奇瘦,但是從cdm轉(zhuǎn)換過來的是沒有的(當(dāng)然有可能我沒有找到位置),設(shè)置獨(dú)有的類型要通過下拉條找劲弦!點(diǎn)...按鈕是沒有的耳标。


設(shè)置year類型.png
常見的錯誤:
  • 刪除失敗
    問題描述:這個問題常見于有很多外鍵關(guān)系的數(shù)據(jù)庫,因?yàn)樯傻哪_本文件是直接判斷表是否存在邑跪,存在就直接刪除次坡。但是因?yàn)橛泻芏嗤怄I關(guān)系,所以刪除不成功画畅。
    解決方案:多執(zhí)行幾次刪除表命令砸琅,保證一個干凈的數(shù)據(jù)庫。

  • 導(dǎo)入的數(shù)據(jù)庫轴踱,外鍵不完整
    問題描述:這是個常見問題症脂,表現(xiàn)為表示是部分獨(dú)立的,一部分一部分執(zhí)行有的時候?qū)е碌慕Y(jié)果也是不一樣的。
    解決方案:檢查外鍵關(guān)系诱篷。
    解決步驟:
    雙擊外鍵關(guān)系的線壶唤,修改code這個屬性。主要是出現(xiàn)在有cdm生成pdm的時候棕所,一對多闸盔,和多對多。上述場景一定要根據(jù)數(shù)據(jù)庫約束重新檢查一次外鍵關(guān)系橙凳。code千萬不要用中文蕾殴,不然生成的外鍵很丑~~~

  • 默認(rèn)值導(dǎo)致的表生成失敗
    錯誤場景:創(chuàng)建表失敗,錯誤提示非法值岛啸。
    錯誤原因:設(shè)置默認(rèn)值的時候钓觉,特別是字符串的時候,不符合類型要求坚踩,就會出現(xiàn)錯誤荡灾。

導(dǎo)入數(shù)據(jù)庫

導(dǎo)入之前,一定要檢測pdm語法瞬铸,排錯批幌,排警告(后面我寫一些常見的錯誤和警告還有解決方法)。

通過Navicat創(chuàng)建一個數(shù)據(jù)庫方便嗓节,

配置ODBC

我這里用的mysql的所以我下載的是64位的ODBC荧缘。注意!拦宣!powerdesigner ODBC mysql 的位數(shù)一定要一致=卮帧!鸵隧!不然會失敗的绸罗。逆向工程也是一樣的。


添加數(shù)據(jù)源.png
設(shè)置參數(shù).png

生成數(shù)據(jù)庫


image.png

可以根據(jù)可以根據(jù)你需要豆瘫,導(dǎo)出sql珊蟀,或者導(dǎo)入的表。


配置導(dǎo)入?yún)?shù).png

最直接的方式就是看代碼外驱,里面的設(shè)置是否存在問題育灸。

sql語句.png

檢查數(shù)據(jù)庫

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昵宇,隨后出現(xiàn)的幾起案子描扯,更是在濱河造成了極大的恐慌,老刑警劉巖趟薄,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異典徊,居然都是意外死亡杭煎,警方通過查閱死者的電腦和手機(jī)恩够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羡铲,“玉大人蜂桶,你說我怎么就攤上這事∫睬校” “怎么了扑媚?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雷恃。 經(jīng)常有香客問我疆股,道長,這世上最難降的妖魔是什么倒槐? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任旬痹,我火速辦了婚禮,結(jié)果婚禮上讨越,老公的妹妹穿的比我還像新娘两残。我一直安慰自己,他們只是感情好把跨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布人弓。 她就那樣靜靜地躺著,像睡著了一般着逐。 火紅的嫁衣襯著肌膚如雪崔赌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天滨嘱,我揣著相機(jī)與錄音峰鄙,去河邊找鬼。 笑死太雨,一個胖子當(dāng)著我的面吹牛吟榴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播囊扳,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼吩翻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锥咸?” 一聲冷哼從身側(cè)響起狭瞎,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搏予,沒想到半個月后熊锭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年碗殷,在試婚紗的時候發(fā)現(xiàn)自己被綠了精绎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡锌妻,死狀恐怖代乃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仿粹,我是刑警寧澤搁吓,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站吭历,受9級特大地震影響堕仔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毒涧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一贮预、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧契讲,春花似錦仿吞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至银伟,卻和暖如春你虹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彤避。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工傅物, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琉预。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓董饰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親圆米。 傳聞我的和親對象是個殘疾皇子卒暂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

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