Java Web應(yīng)用開發(fā)項(xiàng)目教程(第3版) 教案 拓展實(shí)踐2-estoreSSM開發(fā)文檔 9 使用mybaits逆向工程改寫_第1頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程(第3版) 教案 拓展實(shí)踐2-estoreSSM開發(fā)文檔 9 使用mybaits逆向工程改寫_第2頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程(第3版) 教案 拓展實(shí)踐2-estoreSSM開發(fā)文檔 9 使用mybaits逆向工程改寫_第3頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程(第3版) 教案 拓展實(shí)踐2-estoreSSM開發(fā)文檔 9 使用mybaits逆向工程改寫_第4頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程(第3版) 教案 拓展實(shí)踐2-estoreSSM開發(fā)文檔 9 使用mybaits逆向工程改寫_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

9使用mybaits逆向工程改寫Mybatis提供一個工具,可以由數(shù)據(jù)表自動生成實(shí)體類、接口和sql映射文件等。我們的改寫過程由下面幾步組成:(1)使用mybatis-generator生成逆向工程,即由數(shù)據(jù)表自動生成實(shí)體類、dao接口、**mapper.xml映射文件。(2)用生成的實(shí)體類、dao接口、**mapper.xml替換原來estore-ssm工程中的對應(yīng)部分。(3)有了自動生成的一套代碼之后,我們就要利用生成的dao接口和example類來執(zhí)行數(shù)據(jù)表的增刪改查。因此要修改serviceImpl中的相應(yīng)代碼。(4)由于自動生成的實(shí)體類和我們自己寫的實(shí)體類某些數(shù)據(jù)類型不同,例如:bit型,我們自己寫的時候用的int型,生成的實(shí)體類用的Boolean型。訪問這部分?jǐn)?shù)據(jù)的頁面el表達(dá)式要做些修改。1改寫準(zhǔn)備由于馬上用逆向工程生成的代碼和配置文件替換原有estore-ssm的mybaits部分。大家可以選擇下面兩種操作方式(選其一)。(1)不再創(chuàng)建新工程,而是在estore-ssm工程上直接改寫。如果采用此方式,請先estore-ssm工程復(fù)制一份,備份到硬盤某位置,待會兒改寫的時候,有些部分可以參考下原來的實(shí)現(xiàn)方式。(2)創(chuàng)建一個estore-ssm工程的副本,在其上修改。如果采用此方式,則重新創(chuàng)建一個新的web工程,換個名字,把原來estore-ssm中工程中的所有java文件、頁面文件、配置文件、資源等一切拷貝到新web工程中。2使用mybatis-generator生成逆向工程2.1創(chuàng)建Java工程并導(dǎo)入mybatis-generatorjar包創(chuàng)建一個Java工程,名字自定,我們用這個工程來生成逆向。導(dǎo)入兩個jar包(mysql驅(qū)動和mybatis-generator-core)如下:2.2編寫配置文件生成逆向工程需要一個配置文件,該配置文件將指明:如何從數(shù)據(jù)表生成實(shí)體類、映射文件、**Dao接口,可以指定這些自動生成的文件的名字、位置等。該文件已經(jīng)提供,但是需要依據(jù)情況做一些修改。為了讓生成的各種文件替換到原工程之后,代碼錯誤和改動最小化,配置文件修改準(zhǔn)則如下:(1)自動生成的實(shí)體類的包名、類名和原estore-ssm的實(shí)體類包、類名完全一致。(2)自動生成的**Dao接口的包名、接口名和原estore-ssm的**Dao包和接口完全一致。(3)自動生成的****.xml,sql映射文件放置位置同原estore-ssm的映射文件放置位置完全一致。將generatorConfig.xml文件貼到src文件夾下,依照下面截圖,根據(jù)實(shí)際情況修改參數(shù),請仔細(xì)閱讀準(zhǔn)則和參數(shù)含義。生成的實(shí)體類所屬的包名!這里改成和estore-ssm生成的實(shí)體類所屬的包名!這里改成和estore-ssm實(shí)體類同包,這樣生成的實(shí)體類復(fù)制到estore-ssm里才不會報(bào)錯。連接mysql數(shù)據(jù)庫的驅(qū)動類名、連接字符串、用戶名、密碼生成的***Dao接口的位置這里改成和estore-ssm的**Dao.xml同一位置,這樣生成的接口覆蓋到estore-ssm之后,相關(guān)的配置文件就不用改了。生成的***Dao接口的位置這里改成和estore-ssm的**Dao.xml同一位置,這樣生成的接口覆蓋到estore-ssm之后,相關(guān)的配置文件就不用改了。生成的***mapper.xml文件的位置這里改成和estore-ssm的**Mapper.xml同一位置,這樣配置文件覆蓋到estore-ssm之后,相關(guān)的配置文件就不用改了。這幾句設(shè)置了將哪些數(shù)據(jù)表生成逆向的文件,設(shè)置了5張表(商品、用戶、訂單、訂單明細(xì)、購物車)這幾句設(shè)置了將哪些數(shù)據(jù)表生成逆向的文件,設(shè)置了5張表(商品、用戶、訂單、訂單明細(xì)、購物車)domainObjectName用來指定生成的實(shí)體類類名mapperName用來指定這張表對于的**Dao接口名實(shí)體類名和**Dao接口名字如果不指定,會默認(rèn)為TbProduct,TbProductMapper(以tb_product表為例)本例將名字指定為和estore-ssm中的實(shí)體類和××Dao接口同名,是為了生成的文件覆蓋到estore-ssm之后改動最??!2.3生成逆向工程的代碼運(yùn)行下面代碼(代碼中有讀配置文件的語句,文件路徑依據(jù)實(shí)際情況調(diào)整),將生成各種逆向工程中的各種文件。運(yùn)行完之后刷新一下現(xiàn)有的工程,就能看到生成的東西。importjava.io.File;importjava.util.ArrayList;importjava.util.List;importorg.mybatis.generator.api.MyBatisGenerator;importorg.mybatis.generator.config.Configuration;importorg.mybatis.generator.config.xml.ConfigurationParser;importernal.DefaultShellCallback;publicclassTest{ publicstaticvoidmain(String[]args)throwsException{ Listwarnings=newArrayList(); booleanoverwrite=true; //指定逆向工程配置文件 FileconfigFile=newFile("generatorConfig.xml"); ConfigurationParsercp=newConfigurationParser(warnings); Configurationconfig=cp.parseConfiguration(configFile); DefaultShellCallbackcallback=newDefaultShellCallback(overwrite); MyBatisGeneratormyBatisGenerator=newMyBatisGenerator(config, callback,warnings); myBatisGenerator.generate(null); }}2.4生成結(jié)果生成的***.xml,sql映射文件請核對一下映射文件的位置是否和estore-ssm一致生成的***.xml,sql映射文件請核對一下映射文件的位置是否和estore-ssm一致生成的實(shí)體類、每個實(shí)體類對應(yīng)的example類(該類可以用來構(gòu)造復(fù)雜的條件)使用的時候再介紹。請核對一下實(shí)體類的包、類名是否和estore-ssm一致生成的**Dao接口請核對一下包、接口名是否和estore-ssm一致3將逆向生成的文件替換到estore-ssm工程(或其副本工程)中我使用了副本工程,名為estore-ssm-gen,大家的工程名跟我的不同,請無視工程名稱。下面通稱為estore-ssm工程。(1)將逆向生成的實(shí)體類和其example類文件,全部覆蓋到estore-ssm的cn.estore.domain包中。如果逆向時生成的名字沒問題,覆蓋后沒有錯誤。(2)將逆向生成的**Dao接口文件,覆蓋到estore-ssm的cn.estore.dao包中。serviceImpl會報(bào)錯,暫時不理。(3)將逆向生成的***.xmlsql映射文件,覆蓋到estore-ssm的resources.mappers包中。覆蓋后的estore-ssm工程如下:4修改ProductServiceImpl完成首頁和搜索因?yàn)?*Dao接口是逆向生成的,不是自己寫的方法,現(xiàn)在只能利用生成的方法來完成首頁和搜索功能。如果生成的方法實(shí)在無法達(dá)到目的,可以自己向接口里添加方法,向sql映射文件里加sql語句。下面觀察一下自動生成的ProductDao接口里有哪些方法可以用:按主鍵更新,不更新為空的字段。前面幾個是按條件更新,條件由ProductExample來創(chuàng)建按主鍵查按條件select,條件由按主鍵更新,不更新為空的字段。前面幾個是按條件更新,條件由ProductExample來創(chuàng)建按主鍵查按條件select,條件由ProductExample來創(chuàng)建這兩個insert,在為空字段上有點(diǎn)差別,具體的自行百度delete,條件由ProductExample對象來創(chuàng)建delete,按主鍵刪Count(*)條件由ProductExample對象來創(chuàng)建4.1為**Example類添加@Component注解下面以ProductExample類為例,添加@Component注解,其余Example類的注解請自行添加。4.2為applicationContext-service.xml追加一個組件掃描包4.3為ProductServiceImpl自動注入ProductExample對象4.4修改selectProductById方法直接調(diào)用dao接口的按主鍵查詢方法。4.5修改countProduts方法這個方法用來按照商品名進(jìn)行模糊查詢,統(tǒng)計(jì)條數(shù)。如果商品名為空,則查詢所有商品。逆向自動生成的countByExample方法不允許參數(shù)為空,所以要自己寫個if來判斷商品名是否為空,為空,則查詢所有商品的條數(shù)(見下面的if)。把productExample里的條件清空否則使用exmple對象來創(chuàng)建條件Criteria,添加一個namelike條件,然后再count。由于count方法返回long,我們的方法返回值為int,所以把productExample里的條件清空4.6selectProducts方法保持不變由于逆向未生成limit的sql代碼,所以分頁部分還是使用原來的自己寫的方法和sql映射。為ProductDao添加方法(原來estore-ssm工程里有,貼過來就行了)為ProductDao.xml文件添加一個sql映射(原來estore-ssm工程里有,貼過來就行了)4.7修改showProduct.jsp和showProductById.jsp由于是否特價字段,逆向生成了Boolean類型,原來是int型。判斷是否特價的地方均要修改,原來${product.discount==0}的位置要改成下面的樣子:5修改CustomerServiceImpl完成登錄5.1為CustomerServiceImpl注入CustomerExample對象5.2修改login方法為customerExample對象添加兩個條件,用戶名等于××和密碼等于××,然后做查詢,返回List,如果沒有符合條件的記錄,list長度為0,返回n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論