日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码

發(fā)布時間:2025/1/21 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Intellij IDEA 14 作為Java IDE 神器,接觸后發(fā)現(xiàn),非常好用,對它愛不釋手,打算離開eclipse和myeclipse,投入Intellij IDEA的懷抱。

???? 然而在使用的過程中會發(fā)現(xiàn)Intellij IDEA也有一些不盡如意的地方,難免會有些不爽:Intellij IDEA 的插件庫遠(yuǎn)不及eclipse的豐富。 mybatis-generator在eclipse中有專門的插件,而沒有開發(fā)出Intellij IDEA能夠使用的插件。

??? 不過不用灰心,如果你的項目是使用maven組織的,那么我們可以在Intellij IDEA中使用 mybatis-generator-maven-plugin插件來完成MyBatis model 和Mapper文件的自動生成。


STEP 0.在Intellij IDEA創(chuàng)建maven項目(本過程比較簡單,略)


STEP 1. 在maven項目的pom.xml 添加mybatis-generator-maven-plugin 插件


[html]?view plaincopy

  • <build>??

  • ??<finalName>xxx</finalName>??

  • ??<plugins>??

  • ????<plugin>??

  • ??????<groupId>org.mybatis.generator</groupId>??

  • ??????<artifactId>mybatis-generator-maven-plugin</artifactId>??

  • ??????<version>1.3.2</version>??

  • ??????<configuration>??

  • ????????<verbose>true</verbose>??

  • ????????<overwrite>true</overwrite>??

  • ??????</configuration>??

  • ????</plugin>??

  • ??</plugins>??

  • </build>??



  • STEP 2. 在maven項目下的src/main/resources 目錄下建立名為 generatorConfig.xml的配置文件,作為mybatis-generator-maven-plugin 插件的執(zhí)行目標(biāo),模板如下:



    [html]?view plaincopy

  • <?xml?version="1.0"?encoding="UTF-8"?>??

  • <!DOCTYPE?generatorConfiguration??

  • ????????PUBLIC?"-//mybatis.org//DTD?MyBatis?Generator?Configuration?1.0//EN"??

  • ????????"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">??

  • <generatorConfiguration>??

  • ????<!--導(dǎo)入屬性配置?-->??

  • ????<properties?resource="generator.properties"></properties>??

  • ??

  • ????<!--指定特定數(shù)據(jù)庫的jdbc驅(qū)動jar包的位置?-->??

  • ????<classPathEntry?location="${jdbc.driverLocation}"/>??

  • ??

  • ????<context?id="default"?targetRuntime="MyBatis3">??

  • ??

  • ??

  • ????????<!--?optional,旨在創(chuàng)建class時,對注釋進(jìn)行控制?-->??

  • ????????<commentGenerator>??

  • ????????????<property?name="suppressDate"?value="true"?/>??

  • ????????</commentGenerator>??

  • ??

  • ??

  • ????????<!--jdbc的數(shù)據(jù)庫連接?-->??

  • ????????<jdbcConnection?driverClass="${jdbc.driverClass}"?connectionURL="${jdbc.connectionURL}"?userId="${jdbc.userId}"?password="${jdbc.password}">??

  • ????????</jdbcConnection>??

  • ??

  • ??

  • ??

  • ????????<!--?非必需,類型處理器,在數(shù)據(jù)庫類型和java類型之間的轉(zhuǎn)換控制-->??

  • ????????<javaTypeResolver?>??

  • ????????????<property?name="forceBigDecimals"?value="false"?/>??

  • ????????</javaTypeResolver>??

  • ??

  • ????????<!--?Model模型生成器,用來生成含有主鍵key的類,記錄類?以及查詢Example類??

  • ????????????targetPackage?????指定生成的model生成所在的包名??

  • ????????????targetProject?????指定在該項目下所在的路徑??

  • ????????-->??

  • ????????<javaModelGenerator?targetPackage="org.louis.hometutor.po"?targetProject="src/main/java">??

  • ????????????<!--?是否對model添加?構(gòu)造函數(shù)?-->??

  • ????????????<property?name="constructorBased"?value="true"/>??

  • ??

  • ????????????<!--?是否允許子包,即targetPackage.schemaName.tableName?-->??

  • ????????????<property?name="enableSubPackages"?value="false"/>??

  • ??

  • ????????????<!--?建立的Model對象是否?不可改變??即生成的Model對象不會有?setter方法,只有構(gòu)造方法?-->??

  • ????????????<property?name="immutable"?value="true"/>??

  • ??

  • ????????????<!--?給Model添加一個父類?-->??

  • ????????????<property?name="rootClass"?value="com.foo.louis.Hello"/>??

  • ??

  • ????????????<!--?是否對類CHAR類型的列的數(shù)據(jù)進(jìn)行trim操作?-->??

  • ????????????<property?name="trimStrings"?value="true"/>??

  • ????????</javaModelGenerator>??

  • ??

  • ????????<!--Mapper映射文件生成所在的目錄?為每一個數(shù)據(jù)庫的表生成對應(yīng)的SqlMap文件?-->??

  • ????????<sqlMapGenerator?targetPackage="org.louis.hometutor.domain"?targetProject="src/main/java">??

  • ????????????<property?name="enableSubPackages"?value="false"/>??

  • ????????</sqlMapGenerator>??

  • ??

  • ??

  • ????????<!--?客戶端代碼,生成易于使用的針對Model對象和XML配置文件?的代碼??

  • ????????????????type="ANNOTATEDMAPPER",生成Java?Model?和基于注解的Mapper對象??

  • ????????????????type="MIXEDMAPPER",生成基于注解的Java?Model?和相應(yīng)的Mapper對象??

  • ????????????????type="XMLMAPPER",生成SQLMap?XML文件和獨(dú)立的Mapper接口??

  • ????????-->??

  • ????????<javaClientGenerator?targetPackage="com.foo.tourist.dao"?targetProject="src/main/java"?type="MIXEDMAPPER">??

  • ????????????<property?name="enableSubPackages"?value=""/>??

  • ????????????<!--??

  • ????????????????????定義Maper.java?源代碼中的ByExample()?方法的可視性,可選的值有:??

  • ????????????????????public;??

  • ????????????????????private;??

  • ????????????????????protected;??

  • ????????????????????default??

  • ????????????????????注意:如果?targetRuntime="MyBatis3",此參數(shù)被忽略??

  • ?????????????-->??

  • ????????????<property?name="exampleMethodVisibility"?value=""/>??

  • ????????????<!--??

  • ???????????????????????????????????????????方法名計數(shù)器??

  • ??????????????Important?note:?this?property?is?ignored?if?the?target?runtime?is?MyBatis3.??

  • ?????????????-->??

  • ????????????<property?name="methodNameCalculator"?value=""/>??

  • ??

  • ????????????<!--?

  • ????????????????????????????????????????????????為生成的接口添加父接口?

  • ?????????????-->??

  • ????????????<property?name="rootInterface"?value=""/>??

  • ??

  • ????????</javaClientGenerator>??

  • ??

  • ??

  • ??

  • ????????<table?tableName="lession"?schema="louis">??

  • ??

  • ????????????<!--?optional???,?only?for?mybatis3?runtime??

  • ?????????????????自動生成的鍵值(identity,或者序列值)??

  • ???????????????如果指定此元素,MBG將會生成<selectKey>元素,然后將此元素插入到SQL?Map的<insert>?元素之中??

  • ???????????????sqlStatement?的語句將會返回新的值??

  • ???????????????如果是一個自增主鍵的話,你可以使用預(yù)定義的語句,或者添加自定義的SQL語句.?預(yù)定義的值如下:??

  • ??????????????????Cloudscape????This?will?translate?to:?VALUES?IDENTITY_VAL_LOCAL()??

  • ??????????????????DB2:??????VALUES?IDENTITY_VAL_LOCAL()??

  • ??????????????????DB2_MF:???????SELECT?IDENTITY_VAL_LOCAL()?FROM?SYSIBM.SYSDUMMY1??

  • ??????????????????Derby:????????VALUES?IDENTITY_VAL_LOCAL()??

  • ??????????????????HSQLDB:???CALL?IDENTITY()??

  • ??????????????????Informix:?????select?dbinfo('sqlca.sqlerrd1')?from?systables?where?tabid=1??

  • ??????????????????MySql:????????SELECT?LAST_INSERT_ID()??

  • ??????????????????SqlServer:????SELECT?SCOPE_IDENTITY()??

  • ??????????????????SYBASE:???SELECT?@@IDENTITY??

  • ??????????????????JDBC:?????This?will?configure?MBG?to?generate?code?for?MyBatis3?suport?of?JDBC?standard?generated?keys.?This?is?a?database?independent?method?of?obtaining?the?value?from?identity?columns.??

  • ??????????????????identity:?自增主鍵??If?true,?then?the?column?is?flagged?as?an?identity?column?and?the?generated?<selectKey>?element?will?be?placed?after?the?insert?(for?an?identity?column).?If?false,?then?the?generated?<selectKey>?will?be?placed?before?the?insert?(typically?for?a?sequence).??

  • ??

  • ????????????-->??

  • ????????????<generatedKey?column=""?sqlStatement=""?identity=""?type=""/>??

  • ??

  • ??

  • ????????????<!--?optional.??

  • ????????????????????列的命名規(guī)則:??

  • ????????????????????MBG使用?<columnRenamingRule>?元素在計算列名的對應(yīng)?名稱之前,先對列名進(jìn)行重命名,??

  • ????????????????????作用:一般需要對BUSI_CLIENT_NO?前的BUSI_進(jìn)行過濾??

  • ????????????????????支持正在表達(dá)式??

  • ?????????????????????searchString?表示要被換掉的字符串??

  • ?????????????????????replaceString?則是要換成的字符串,默認(rèn)情況下為空字符串,可選??

  • ????????????-->??

  • ????????????<columnRenamingRule?searchString=""?replaceString=""/>??

  • ??

  • ??

  • ??

  • ????????????<!--?optional.告訴?MBG?忽略某一列??

  • ????????????????????column,需要忽略的列??

  • ????????????????????delimitedColumnName:true?,匹配column的值和數(shù)據(jù)庫列的名稱?大小寫完全匹配,false?忽略大小寫匹配??

  • ????????????????????是否限定表的列名,即固定表列在Model中的名稱??

  • ????????????-->??

  • ????????????<ignoreColumn?column="PLAN_ID"??delimitedColumnName="true"?/>??

  • ??

  • ??

  • ????????????<!--optional.覆蓋MBG對Model?的生成規(guī)則??

  • ?????????????????column:?數(shù)據(jù)庫的列名??

  • ?????????????????javaType:?對應(yīng)的Java數(shù)據(jù)類型的完全限定名??

  • ?????????????????在必要的時候可以覆蓋由JavaTypeResolver計算得到的java數(shù)據(jù)類型.?For?some?databases,?this?is?necessary?to?handle?"odd"?database?types?(e.g.?MySql's?unsigned?bigint?type?should?be?mapped?to?java.lang.Object).??

  • ?????????????????jdbcType:該列的JDBC數(shù)據(jù)類型(INTEGER,?DECIMAL,?NUMERIC,?VARCHAR,?etc.),該列可以覆蓋由JavaTypeResolver計算得到的Jdbc類型,對某些數(shù)據(jù)庫而言,對于處理特定的JDBC?驅(qū)動癖好?很有必要(e.g.?DB2's?LONGVARCHAR?type?should?be?mapped?to?VARCHAR?for?iBATIS).??

  • ?????????????????typeHandler:??

  • ??

  • ????????????-->??

  • ????????????<columnOverride?column=""?javaType=""????jdbcType=""?typeHandler=""??delimitedColumnName=""?/>??

  • ??

  • ????????</table>??

  • ????</context>??

  • </generatorConfiguration>??


  • 這里使用了外置的配置文件generator.properties,可以將一下屬性配置到properties文件之中,增加配置的靈活性:


    [plain]?view plaincopy

  • jdbc.driverLocation=D:\\maven\\com\\oracle\\ojdbc14\\10.2.0.4.0\\ojdbc14-10.2.0.4.0.jar??

  • jdbc.driverClass=oracle.jdbc.driver.OracleDriver??

  • jdbc.connectionURL=jdbc:oracle:thin:@//localhost:1521/XE??

  • jdbc.userId=LOUIS??

  • jdbc.password=123456??


  • 項目目錄如下:






    STEP 3. 在Intellij IDEA添加一個“Run運(yùn)行”選項,使用maven運(yùn)行mybatis-generator-maven-plugin插件 :


    之后彈出運(yùn)行配置框,為當(dāng)前配置配置一個名稱,這里其名為"generator",然后在 “Command line” 選項中輸入“mybatis-generator:generate? -e

    這里加了“-e ”選項是為了讓該插件輸出詳細(xì)信息,這樣可以幫助我們定位問題。

    如果添加成功,則會在run 選項中有“generator” 選項,如下:

    點(diǎn)擊運(yùn)行,然后不出意外的話,會在控制臺輸出:


    [plain]?view plaincopy

  • C:\Java\jdk1.7.0_71\bin\java?-Dmaven.home=D:\software\apache-maven-3.0.5-bin?-Dclassworlds.conf=D:\software\apache-maven-3.0.5-bin\bin\m2.conf?-Didea.launcher.port=7533?"-Didea.launcher.bin.path=D:\applications\JetBrains\IntelliJ?IDEA?14.0.2\bin"?-Dfile.encoding=UTF-8?-classpath?"D:\software\apache-maven-3.0.5-bin\boot\plexus-classworlds-2.4.jar;D:\applications\JetBrains\IntelliJ?IDEA?14.0.2\lib\idea_rt.jar"?com.intellij.rt.execution.application.AppMain?org.codehaus.classworlds.Launcher?-Didea.version=14.0.2?-s?D:\software\apache-maven-3.0.5-bin\conf\settings.xml?mybatis-generator:generate?-e??

  • [INFO]?Error?stacktraces?are?turned?on.??

  • [INFO]?Scanning?for?projects...??

  • [INFO]???????????????????????????????????????????????????????????????????????????

  • [INFO]?------------------------------------------------------------------------??

  • [INFO]?Building?hometutor?Maven?Webapp?1.0-SNAPSHOT??

  • [INFO]?------------------------------------------------------------------------??

  • [INFO]???

  • [INFO]?---?mybatis-generator-maven-plugin:1.3.2:generate?(default-cli)?@?hometutor?---??

  • [INFO]?Connecting?to?the?Database??

  • [INFO]?Introspecting?table?louis.lession??

  • log4j:WARN?No?appenders?could?be?found?for?logger?(org.mybatis.generator.internal.db.DatabaseIntrospector).??

  • log4j:WARN?Please?initialize?the?log4j?system?properly.??

  • log4j:WARN?See?http://logging.apache.org/log4j/1.2/faq.html#noconfig?for?more?info.??

  • [INFO]?Generating?Example?class?for?table?LOUIS.LESSION??

  • [INFO]?Generating?Record?class?for?table?LOUIS.LESSION??

  • [INFO]?Generating?Mapper?Interface?for?table?LOUIS.LESSION??

  • [INFO]?Generating?SQL?Map?for?table?LOUIS.LESSION??

  • [INFO]?Saving?file?LessionMapper.xml??

  • [INFO]?Saving?file?LessionExample.java??

  • [INFO]?Saving?file?Lession.java??

  • [INFO]?Saving?file?LessionMapper.java??

  • [WARNING]?Root?class?com.foo.louis.Hello?cannot?be?loaded,?checking?for?member?overrides?is?disabled?for?this?class???

  • [WARNING]?Existing?file?E:\sources\tutor\src\main\java\org\louis\hometutor\po\Lession.java?was?overwritten??

  • [WARNING]?Existing?file?E:\sources\tutor\src\main\java\com\foo\tourist\dao\LessionMapper.java?was?overwritten??

  • [INFO]?------------------------------------------------------------------------??

  • [INFO]?BUILD?SUCCESS??

  • [INFO]?------------------------------------------------------------------------??

  • [INFO]?Total?time:?2.334s??

  • [INFO]?Finished?at:?Tue?Jan?27?12:04:08?CST?2015??

  • [INFO]?Final?Memory:?8M/107M??

  • [INFO]?------------------------------------------------------------------------??

  • ??

  • Process?finished?with?exit?code?0??


  • 好,看到BUILD SUCCESS,則大功告成,如果有錯誤的話,由于添加了-e 選項,會把具體的詳細(xì)錯誤信息打印出來的,根據(jù)錯誤信息修改即可


    轉(zhuǎn)載于:https://blog.51cto.com/1306733/1738370

    總結(jié)

    以上是生活随笔為你收集整理的Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。