1. 通過generator寫的mybatis怎麼獲取新增是的id
在MBG中,最主要也最重要的就是XML配置文件,因此本篇文章主要的內容就是XML配置。
這里按照配置的順序對配置逐個講解,更細的內容可以配合中文文檔參照。
1. 配置文件頭
<?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">
使用最新版的MBG需要使用上面的xml頭,配置文件必須包含上面的DOCTYPE。
2. 根節點<generatorConfiguration>
generatorConfiguration節點沒有任何屬性,直接寫節點即可,如下:
<generatorConfiguration>
<!-- 具體配置內容 -->
</generatorConfiguration>
3. <generatorConfiguration>子元素
從這段開始,就是配置的主要內容,這些配置都是generatorConfiguration元素的子元素。
包含以下子元素(有嚴格的順序):
<properties> (0個或1個)
<classPathEntry> (0個或多個)
<context> (1個或多個)
3.1 <properties> 元素
這個元素用來指定外部的屬性元素,不是必須的元素。
元素用於指定一個需要在配置中解析使用的外部屬性文件,引入屬性文件後,可以在配置中使用 ${property}這種形式的引用,通過這種方式引用屬性文件中的屬性值。 對於後面需要配置的**jdbc信息**和targetProject屬性會很有用。
這個屬性可以通過resource或者url來指定屬性文件的位置,這兩個屬性只能使用其中一個來指定,同時出現會報錯。
resource:指定**classpath**下的屬性文件,使用類似com/myproject/generatorConfig.properties這樣的屬性值。
url:可以指定文件系統上的特定位置,例如file:///C:/myfolder/generatorConfig.properties
3.2 <classPathEntry> 元素
這個元素可以0或多個,不受限制。
這個元素的作用是將MBG運行時需要用到的jar包(或zip格式)添加到**classpath**下。
最常見的用法是,當**classpath**下面**沒有**JDBC驅動的時候,我們通常通過這個屬性指定驅動的路徑,例如:
<classPathEntry location="E:\mysql\mysql-connector-java-5.1.29.jar"/>
如果需要用到其他的jar包,也可以這么配置,例如如果你開發了一個MBG的插件,你就可以通過這種方式加入到**classpath**
這里注意上面重點強調的 沒有,一般在項目中使用的時候,**classpath**下面都有JDBC驅動,因此從項目中啟動的時候不需要配置該項。
建議:由於該參數使用了絕對路徑,因此不利用在不同電腦上通用,因此建議最好把需要的jar包放到項目的**classpath**下,避免每個人都得單獨配置路徑。
3.3 <context> 元素
在MBG的配置中,至少需要有一個<context>元素。
<context>元素用於指定生成一組對象的環境。例如指定要連接的資料庫,要生成對象的類型和要處理的資料庫中的表。運行MBG的時候還可以指定要運行的<context>。
該元素只有一個**必選屬性**id,用來唯一確定一個<context>元素,該id屬性可以在運行MBG的使用。
此外還有幾個**可選屬性**:
defaultModelType:**這個屬性很重要**,這個屬性定義了MBG如何生成**實體類**。
這個屬性有以下可選值:
conditional:*這是默認值*,這個模型和下面的hierarchical類似,除了如果那個單獨的類將只包含一個欄位,將不會生成一個單獨的類。 因此,如果一個表的主鍵只有一個欄位,那麼不會為該欄位生成單獨的實體類,會將該欄位合並到基本實體類中。
flat:該模型為每一張表只生成一個實體類。這個實體類包含表中的所有欄位。**這種模型最簡單,推薦使用。**
hierarchical:如果表有主鍵,那麼該模型會產生一個單獨的主鍵實體類,如果表還有BLOB欄位, 則會為表生成一個包含所有BLOB欄位的單獨的實體類,然後為所有其他的欄位生成一個單獨的實體類。 MBG會在所有生成的實體類之間維護一個繼承關系。
targetRuntime:此屬性用於指定生成的代碼的運行時環境。該屬性支持以下可選值:
MyBatis3:*這是默認值*
MyBatis3Simple
Ibatis2Java2
Ibatis2Java5 一般情況下使用默認值即可,有關這些值的具體作用以及區別請查看中文文檔的詳細內容。
introspectedColumnImpl:該參數可以指定擴展org.mybatis.generator.api.IntrospectedColumn該類的實現類。該屬性的作用可以查看擴展MyBatis Generator。
一般情況下,我們使用如下的配置即可:
<context id="Mysql" defaultModelType="flat">
如果你希望不生成和Example查詢有關的內容,那麼可以按照如下進行配置:
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
使用MyBatis3Simple可以避免在後面的<table>中逐個進行配置(後面會提到)。
MBG配置中的其他幾個元素,基本上都是<context>的子元素,這些子元素(有嚴格的配置順序)包括:
<property> (0個或多個)
<plugin> (0個或多個)
<commentGenerator> (0個或1個)
<jdbcConnection> (1個)
<javaTypeResolver> (0個或1個)
<javaModelGenerator> (1個)
<sqlMapGenerator> (0個或1個)
<javaClientGenerator> (0個或1個)
<table> (1個或多個)
其中<property>屬性比較特殊,後面講解的時候都會和父元素一起進行講解。在講解<property>屬性前,我們先看看**什麼是分隔符?**。
這里通過一個例子說明。假設在Mysql資料庫中有一個表名為user info,你沒有看錯,中間是一個空格,這種情況下如果寫出select * from user info這樣的語句,肯定是要報錯的,在Mysql中的時候我們一般會寫成如下的樣子:
select * from `user info`
這里的使用的**反單引號(`)**就是**分隔符**,**分隔符**可以用於**表名**或者**列名**。
下面繼續看<property>支持的屬性:
autoDelimitKeywords
beginningDelimiter
endingDelimiter
javaFileEncoding
javaFormatter
xmlFormatter
由於這些屬性比較重要,這里一一講解。
首先是autoDelimitKeywords,當表名或者欄位名為SQL關鍵字的時候,可以設置該屬性為true,MBG會自動給表名或欄位名添加**分隔符**。
然後這里繼續上面的例子來講beginningDelimiter和endingDelimiter屬性。
由於beginningDelimiter和endingDelimiter的默認值為雙引號("),在Mysql中不能這么寫,所以還要將這兩個默認值改為**反單引號(`)**,配置如下:
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
屬性javaFileEncoding設置要使用的Java文件的編碼,默認使用當前平台的編碼,只有當生產的編碼需要特殊指定時才需要使用,一般用不到。
最後兩個javaFormatter和xmlFormatter屬性**可能會**很有用,如果你想使用模板來定製生成的java文件和xml文件的樣式,你可以通過指定這兩個屬性的值來實現。
接下來分節對其他的子元素逐個進行介紹。
3.3.1 <plugin> 元素
該元素可以配置0個或者多個,不受限制。
<plugin>元素用來定義一個插件。插件用於擴展或修改通過MyBatis Generator (MBG)代碼生成器生成的代碼。
插件將按在配置中配置的順序執行。
有關插件的詳細信息可以參考開發插件和提供的插件了解更多。
3.3.2 <commentGenerator> 元素
該元素最多可以配置1個。
這個元素非常有用,相信很多人都有過這樣的需求,就是希望MBG生成的代碼中可以包含**注釋信息**,具體就是生成表或欄位的備注信息。
使用這個元素就能很簡單的實現我們想要的功能。這里先介紹該元素,介紹完後會舉例如何擴展實現該功能。
該元素有一個可選屬性type,可以指定用戶的實現類,該類需要實現org.mybatis.generator.api.CommentGenerator介面。而且必有一個默認的構造方法。這個屬性接收默認的特殊值DEFAULT,會使用默認的實現類org.mybatis.generator.internal.DefaultCommentGenerator。
默認的實現類中提供了兩個可選屬性,需要通過<property>屬性進行配置。
suppressAllComments:**阻止**生成注釋,默認為false
suppressDate:**阻止**生成的注釋包含時間戳,默認為false
一般情況下由於MBG生成的注釋信息沒有任何價值,而且有時間戳的情況下每次生成的注釋都不一樣,使用**版本控制**的時候每次都會提交,因而一般情況下我們都會屏蔽注釋信息,可以如下配置:
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
接下來我們簡單舉例實現生成包含表欄位注釋信息的注釋
因為系統提供了一個默認的實現類,所以對我們來說,自己實現一個會很容易,最簡單的方法就是復制默認實現類代碼到一個新的文件中,修改類名如MyCommentGenerator,在你自己的實現類中,你可以選擇是否繼續支持上面的兩個屬性,你還可以增加對其他屬性的支持。
我們通過下面一個方法的修改來了解,其他幾個方法請自行修改(寫本章的時候我也沒有完全實現該類,所以不提供完整源碼了):
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
if (introspectedColumn.getRemarks() != null && !introspectedColumn.getRemarks().equals("")) {
field.addJavaDocLine("/**");
field.addJavaDocLine(" * " + introspectedColumn.getRemarks());
addJavadocTag(field, false);
field.addJavaDocLine(" */");
}
}
這個方法是給欄位添加註釋信息的,其中IntrospectedColumn包含了欄位的完整信息,通過getRemarks方法可以獲取欄位的注釋信息。上面這個方法修改起來還是很容易的。除了欄位的注釋外還有Getter和Setter,以及類的注釋。此外還有生成XML的注釋,大家可以根據默認的實現進行修改。
完成我們自己的實現類後,我們還需要做如下配置:
<commentGenerator type="com.github.abel533.mybatis.generator.MyCommentGenerator"/>
3.3.3 <jdbcConnection> 元素
<jdbcConnection>用於指定資料庫連接信息,該元素必選,並且只能有一個。
配置該元素只需要注意如果JDBC驅動不在**classpath**下,就需要通過<classPathEntry>元素引入jar包,這里**推薦**將jar包放到**classpath**下。
該元素有兩個必選屬性:
driverClass:訪問資料庫的JDBC驅動程序的完全限定類名
connectionURL:訪問資料庫的JDBC連接URL
該元素還有兩個可選屬性:
userId:訪問資料庫的用戶ID
password:訪問資料庫的密碼
此外該元素還可以接受多個<property>子元素,這里配置的<property>屬性都會添加到JDBC驅動的屬性中。
這個元素配置起來最容易,這里舉個簡單例子:
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="">
</jdbcConnection>
3.3.4 <javaTypeResolver> 元素
該元素最多可以配置一個。
這個元素的配置用來指定JDBC類型和Java類型如何轉換。
該元素提供了一個可選的屬性type,和<commentGenerator>比較類型,提供了默認的實現DEFAULT,一般情況下使用默認即可,需要特殊處理的情況可以通過其他元素配置來解決,不建議修改該屬性。
該屬性還有一個可以配置的<property>元素。
可以配置的屬性為forceBigDecimals,該屬性可以控制是否強制DECIMAL和NUMERIC類型的欄位轉換為Java類型的java.math.BigDecimal,默認值為false,一般不需要配置。
默認情況下的轉換規則為:
如果精度>0或者長度>18,就會使用java.math.BigDecimal
如果精度=0並且10<=長度<=18,就會使用java.lang.Long
如果精度=0並且5<=長度<=9,就會使用java.lang.Integer
如果精度=0並且長度<5,就會使用java.lang.Short
如果設置為true,那麼一定會使用java.math.BigDecimal,配置示例如下:
<javaTypeResolver >
<property name="forceBigDecimals" value="true" />
</javaTypeResolver>
3.3.5 <javaModelGenerator> 元素
該元素必須配置一個,並且最多一個。
該元素用來控制生成的實體類,根據<context>中配置的defaultModelType,一個表可能會對應生成多個不同的實體類。一個表對應多個類實際上並不方便,所以前面也推薦使用flat,這種情況下一個表對應一個實體類。
該元素只有兩個屬性,都是必選的。
targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(<table>中會提到)。
targetProject:指定目標項目路徑,使用的是文件系統的絕對路徑。
該元素支持以下幾個<property>子元素屬性:
constructorBased:該屬性只對MyBatis3有效,如果true就會使用構造方法入參,如果false就會使用setter方式。默認為false。
enableSubPackages:如果true,MBG會根據catalog和schema來生成子包。如果false就會直接用targetPackage屬性。默認為false。
immutable:該屬性用來配置實體類屬性是否可變,如果設置為true,那麼constructorBased不管設置成什麼,都會使用構造方法入參,並且不會生成setter方法。如果為false,實體類屬性就可以改變。默認為false。
rootClass:設置所有實體類的基類。如果設置,需要使用類的全限定名稱。並且如果MBG能夠載入rootClass,那麼MBG不會覆蓋和父類中完全匹配的屬性。匹配規則:
屬性名完全相同
屬性類型相同
屬性有getter方法
屬性有setter方法
trimStrings:是否對資料庫查詢結果進行trim操作,如果設置為true就會生成類似這樣public void setUsername(String username) {this.username = username == null ? null : username.trim();}的setter方法。默認值為false。
配置示例如下:
<javaModelGenerator targetPackage="test.model" targetProject="E:\MyProject\src\main\java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
3.3.6 <sqlMapGenerator> 元素
該元素可選,最多配置一個。但是有如下兩種必選的特殊情況:
如果targetRuntime目標是**iBATIS2**,該元素必須配置一個。
如果targetRuntime目標是**MyBatis3**,只有當<javaClientGenerator>需要XML時,該元素必須配置一個。 如果沒有配置<javaClientGenerator>,則使用以下的規則:
如果指定了一個<sqlMapGenerator>,那麼MBG將只生成XML的SQL映射文件和實體類。
如果沒有指定<sqlMapGenerator>,那麼MBG將只生成實體類。
該元素只有兩個屬性(和前面提過的<javaModelGenerator>的屬性含義一樣),都是必選的。
targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(<table>中會提到)。
targetProject:指定目標項目路徑,使用的是文件系統的絕對路徑。
該元素支持<property>子元素,只有一個可以配置的屬性:
enableSubPackages:如果true,MBG會根據catalog和schema來生成子包。如果false就會直接用targetPackage屬性。默認為false。
配置示例:
<sqlMapGenerator targetPackage="test.xml" targetProject="E:\MyProject\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
3.3.7 <javaClientGenerator> 元素
該元素可選,最多配置一個。
如果不配置該元素,就不會生成Mapper介面。
該元素有3個必選屬性:
type:該屬性用於選擇一個預定義的客戶端代碼(可以理解為Mapper介面)生成器,用戶可以自定義實現,需要繼承org.mybatis.generator.codegen.AbstractJavaClientGenerator類,必選有一個默認的構造方法。 該屬性提供了以下預定的代碼生成器,首先根據<context>的targetRuntime分成三類:
MyBatis3:
ANNOTATEDMAPPER:基於註解的Mapper介面,不會有對應的XML映射文件
MIXEDMAPPER:XML和註解的混合形式,(上面這種情況中的)SqlProvider註解方法會被XML替代。
XMLMAPPER:所有的方法都在XML中,介面調用依賴XML文件。
MyBatis3Simple:
ANNOTATEDMAPPER:基於註解的Mapper介面,不會有對應的XML映射文件
XMLMAPPER:所有的方法都在XML中,介面調用依賴XML文件。
Ibatis2Java2或**Ibatis2Java5**:
IBATIS:生成的對象符合iBATIS的DAO框架(不建議使用)。
GENERIC-CI:生成的對象將只依賴於SqlMapClient,通過構造方法注入。
GENERIC-SI:生成的對象將只依賴於SqlMapClient,通過setter方法注入。
SPRING:生成的對象符合Spring的DAO介面
targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(<table>中會提到)。
targetProject:指定目標項目路徑,使用的是文件系統的絕對路徑。
該元素還有一個可選屬性:
implementationPackage:如果指定了該屬性,實現類就會生成在這個包中。
該元素支持<property>子元素設置的屬性:
enableSubPackages
exampleMethodVisibility
methodNameCalculator
rootInterface
useLegacyBuilder
這幾個屬性不太常用,具體作用請看完整的文檔,這里對rootInterface做個簡單介紹。
rootInterface用於指定一個所有生成的介面都繼承的父介面。 這個值可以通過<table>配置的rootInterface屬性覆蓋。
這個屬性對於通用Mapper來說,可以讓生成的所有介面都繼承該介面。
2. mybatis-config.xml,應該放在哪個目錄下
mybatis-config.xml文件,是應該放在:
1、手工創建的「src/main/resources」目錄;
2、「WEB-INF」目錄;
3. SpringBoot鏁村悎MyBatisPlus閰嶇疆鍔ㄦ佹暟鎹婧
MybatisPlus鐗規
蹇閫熷紑濮
鍒濆嬪寲嫻嬭瘯鏁版嵁琛錛
鐖跺伐紼嬩緷璧
璇ュ伐紼嬬敤浜庝緷璧栫$悊錛宲om濡備笅錛
鍒涘緩MyBaitsPlus宸ョ▼
渚濊禆濡備笅錛
properties閰嶇疆
鍦ㄨ繖閲岄厤緗鏁版嵁搴撹繛鎺ワ紝浠ュ強鏁版嵁榪炴帴奼犱笌mybatisplus鐨勯厤緗絳
甯歌勫炲垹鏀規煡瀹炵幇
鍒涘緩瀹炰綋綾伙細
璇lombok鎻掍歡鐪佸幓getset鏂規硶銆
鍒涘緩UserMapper鎺ュ彛錛屽苟涓斿疄鐜癇aseMapper<User>榪欓噷鎴戜滑鎸囧畾瀹炰綋綾諱負user鍙鐩存帴浣跨敤鎺ュ彛涓鐨勬柟娉曘
UserMapper.xml錛屽備笅錛
鎵ц孲QL錛
鍦⊿pringBoot涓浣跨敤MybatisPlus鍒嗛〉闇瑕佹敞鍏Bean錛屽苟涓斿湪鍚鍔ㄧ被涓婁嬌鐢ˊMapperScan("com.simple.spring.boot.mapper")鎵鎻弇apper鏂囦歡璺寰勫備笅錛
浣跨敤MyBatisPlus鍙浠ヤ負鎴戜滑鍑忓皯寰堝氬緢澶氱殑浠g爜錛屼笉榪囬渶瑕佺紪鍐欏疄浣撶被錛屾湁澶卞繀鏈夊緱銆
閰嶇疆鍔ㄦ佹暟鎹婧
dynamic-datasource-spring-boot-starter 鏄涓涓鍩轟簬springboot鐨勫揩閫熼泦鎴愬氭暟鎹婧愮殑鍚鍔ㄥ櫒銆
浼樺娍
緗戜笂鍏充簬鍔ㄦ佹暟鎹婧愮殑鍒囨崲鐨勬枃妗f湁寰堝氾紝鏍稿績鍙鏈変袱縐嶃
濡傛灉浣犵殑鏁版嵁婧愯緝灝戱紝鍦烘櫙涓嶅嶆潅錛岄夋嫨浠ヤ笂浠繪剰涓縐嶉兘鍙浠ャ傚傛灉浣犻渶瑕佹洿澶氱壒鎬э紝璇峰皾璇曟湰鍔ㄦ佹暟鎹婧愩
鍔e娍
涓嶈兘浣跨敤澶氭暟鎹婧愪簨鍔★紙鍚屼竴涓鏁版嵁婧愪笅鑳戒嬌鐢ㄤ簨鍔★級錛岀綉涓婂叾浠栨柟妗堜篃閮戒笉鑳芥彁渚涖
濡傛灉浣犻渶瑕佷嬌鐢ㄥ埌鍒嗗竷寮忎簨鍔★紝閭d箞浣犵殑鏋舵瀯搴旇ュ埌浜嗗井鏈嶅姟鍖栫殑鏃跺欎簡銆
濡傛灉鍛煎0寮虹儓錛岄」鐩杈懼埌800 star錛屼綔鑰呰冭檻闆嗘垚鍒嗗竷寮忎簨鍔°
PS: 濡傛灉鎮ㄥ彧鏄鍑犱釜鏁版嵁搴撲絾鏄鏈夊己鐑堢殑闇奼傚垎甯冨紡浜嬪姟錛屽緩璁榪樻槸浣跨敤浼犵粺鏂瑰紡鑷宸辨瀯寤哄氬楃幆澧冮泦鎴恆tomic榪欑被錛岀綉涓婄櫨搴﹀緢澶氥
綰﹀畾
寤鴻
寮虹儓寤鴻鍦 涓諱粠妯″紡 涓嬮伒寰鏅閬嶇殑瑙勫垯錛屼互渚誇粬浜鴻兘鏇磋交鏄撶悊瑙d綘鐨勪唬鐮併
涓繪暟鎹搴 寤鴻 鍙鎵ц INSERT UPDATE DELETE 鎿嶄綔銆
浠庢暟鎹搴 寤鴻 鍙鎵ц SELECT 鎿嶄綔銆
蹇閫熷紑濮
鍔犲叆渚濊禆錛
娉ㄩ噴鎺夊師鏉ョ殑鏁版嵁搴撻厤緗錛屽姞鍏ワ細
浣跨敤 @DS 鍒囨崲鏁版嵁婧愩
@DS 鍙浠ユ敞瑙e湪鏂規硶涓婂拰綾諱笂錛 鍚屾椂瀛樺湪鏂規硶娉ㄨВ浼樺厛浜庣被涓婃敞瑙 銆
娉ㄨВ鍦╯ervice瀹炵幇鎴杕apper鎺ュ彛鏂規硶涓婏紝浣嗗己鐑堜笉寤鴻鍚屾椂鍦╯ervice鍜宮apper娉ㄨВ銆 (鍙鑳戒細鏈夐棶棰)
濡傛灉涓嶅姞鍏ヤ富閿鍒欎嬌鐢ㄩ粯璁ゆ暟鎹婧愩
DruidDataSourceAutoConfigure浼氭敞鍏ヤ竴涓狣ataSourceWrapper錛屽叾浼氬湪鍘熺敓鐨剆pring.datasource涓嬫壘url,username,password絳夈傝屾垜浠鍔ㄦ佹暟鎹婧愮殑閰嶇疆璺寰勬槸鍙樺寲鐨,鎵浠ラ渶瑕佹帓闄わ細
鎴栬呭湪綾諱笂鎺掗櫎錛
鐒跺悗鏇存崲properties閰嶇疆淇℃伅錛
鏈綃囦唬鐮佹堜緥鍦板潃錛
https://github.com/450255266/open-doubi
浣滆咃細SimpleWu
鍑哄勶細https://www.cnblogs.com/SimpleWu/p/10930388.html
4. mybatis基本配置詳解
中間步驟自行設置
MySQL驅動版本根據自己安裝的MySQL選擇
我把AppTest改成了MybatisTest,不該也無妨;
其中Student類暫時只設置四個欄位:
mapper介面暫時為空
在resources目錄下新建File命名為db.peoperties,配置如下內容:
提示:以上配置適用於MySQL8.X版本,5.X版本按照如下配置:
1、transactionManager:事告伏務管理器;
type 事務管理類型:
JDBC(JdbcTransactionFactory);
MANAGED(ManagedTransactionFactory)
自定義事務管理器:實現TransactionFactory介面.type指定為全類名
2、dataSource:數據源;
type :數據源類型;
UNPOOLED(UnpooledDataSourceFactory); POOLED(PooledDataSourceFactory);
JNDI(JndiDataSourceFactory)
自定義數據源:實襪悉攜現DataSourceFactory介面,type是全類名
<mapper>:注冊一個sql映射文件
1、注冊映射文件
resource:引用類路徑下的sql映射文件
mybatis/StudentMapperpper.xml
url:引用網路路徑或者磁碟路徑下的sql映射文件
file:///var/mappers/AuthorMapper.xml
2、注冊介面
class:引用(注冊)介面,
① 有sql映射文件,映射文件名必須和介面同名,並且放在與介面同一目錄下;
② 沒有sql映射文件,所有的sql都是利用註解寫在介面上;
推薦:
比較重要的,復雜的Dao介面我們來寫sql映射文件
不重要,簡單的Dao介面為了開發快速可以使用註解;
批量注冊
需要在資源路徑下(resources)建立和一樣的文件目錄來存放想xml映射文件,如:com.example.StudentMapperpper.xml
StudentMapper
在resources的mybatis目錄下新建文件夾mapper,新建xml文件StudentMapper.xml
namespace :名稱空間;指定為介面的全類名
id :唯陸襪一標識
resultType :返回值類型
#{id} :從傳遞過來的參數中取出id值
resources目錄(MajorMapper.xml暫時不用創建)如下:
5. IDEA 無法讀取項目的xml配置文件,找不到路徑是為什麼
1.將所有資源文件放在resources文件夾下
這樣做很方便,比較容易想到,但是層次性就很差了,比如專mybatis的映射配置文件mapper.xml,本屬來需要放在特定的包裡面,與層,service層等層次為同一個層級,如今只能放在resource文件夾下,不方便分層;
2.如果該項目是maven項目:
配置maven的pom文件配置,在pom文件中找到<build>節點,添加下列代碼:
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build>
我嘗試過將directory修改為具體的放置配置文件的包,即修改成 src/main/java/lj/ncepu/mapperXML,然後<include>標簽裡面也做了很多修改和嘗試,始終無法訪問到配置文件;
6. 如何配置mybatis開發環境
1、打開MyEclipse或者Eclipse,新建一個JavaProject項目mybatis
謝謝採納