導航:首頁 > 文件管理 > mybatis資料庫配置文件

mybatis資料庫配置文件

發布時間:2023-06-17 03:29:14

『壹』 mybatis的sqlmappconfig.xml中的masql資料庫怎麼配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 參數設置 -->
<settings>
<!-- 這個配置使全局的映射器啟用或禁用緩存 -->
<setting name="cacheEnabled" value="true" />
<!-- 全局啟用或禁用延遲載入。當禁用時,所有關聯對象都會即時載入 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 當啟用時,有延遲載入屬性的對象在被調用時將會完全載入任意屬性。否則,每種屬性將會按需要載入 -->
<setting name="aggressiveLazyLoading" value="true" />
<!-- 允許或不允許多種結果集從一個單獨的語句中返回(需要適合的驅動) -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 使用列標簽代替列名。不同的驅動在這方便表現不同。參考驅動文檔或充分測試兩種方法來決定所使用的驅動 -->
<setting name="useColumnLabel" value="true" />
<!-- 允許JDBC支持生成的鍵。需要適合的驅動。如果設置為true則這個設置強制生成的鍵被使用,盡管一些驅動拒絕兼容但仍然有效(比如Derby) -->
<setting name="useGeneratedKeys" value="true" />
<!-- 指定MyBatis如何自動映射列到欄位/屬性。PARTIAL只會自動映射簡單,沒有嵌套的結果。FULL會自動映射任意復雜的結果(嵌套的或其他情況) -->
<setting name="autoMappingBehavior" value="PARTIAL" />
<!--當檢測出未知列(或未知屬性)時,如何處理,默認情況下沒有任何提示,這在測試的時候很不方便,不容易找到錯誤。
NONE : 不做任何處理 (默認值)
WARNING : 警告日誌形式的詳細信息
FAILING : 映射失敗,拋出異常和詳細信息
-->
<setting name="" value="WARNING"/>
<!-- 配置默認的執行器。SIMPLE執行器沒有什麼特別之處。REUSE執行器重用預處理語句。BATCH執行器重用語句和批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 設置超時時間,它決定驅動等待一個資料庫響應的時間 -->
<setting name="defaultStatementTimeout" value="25000" />
<!--設置查詢返回值數量,可以被查詢數值覆蓋 -->
<setting name="defaultFetchSize" value="100"/>
<!-- 允許在嵌套語句中使用分頁-->
<setting name="safeRowBoundsEnabled" value="false"/>
<!--是否開啟自動駝峰命名規則(camel case)映射,即從經典資料庫列名 A_COLUMN 到經典 java 屬性名 aColumn 的類似映射。-->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!--MyBatis 利用本地緩存機制(Local Cache)防止循環引用(circular references)和加速重復嵌套查詢。 默認值為 SESSION,這種情況下會緩存一個會話中執行的所有查詢。 若設置值為 STATEMENT,本地會話僅用在語句執行上,對相同 SqlSession 的不同調用將不會共享數據。-->
<setting name="localCacheScope" value="SESSION"/>
<!-- 當沒有為參數提供特定的 JDBC 類型時,為空值指定 JDBC 類型。 某些驅動需要指定列的 JDBC 類型,多數情況直接用一般類型即可,比如 NULL、VARCHAR
OTHER。-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!-- 指定哪個對象的方法觸發一次延遲載入。-->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

<!-- 別名定義 -->
<typeAliases>
<typeAlias alias="pageAccessURL" type="com.lgm.mybatis.model.PageAccessURL" />
</typeAliases>

<!--自定義類型處理器 -->
<typeHandlers>
<!-- <typeHandler handler="com.xhm.util.BooleanTypeHandlder" /> -->
<!--掃描整個包下的自定義類型處理器-->
<package name="com.xhm.util"/>
</typeHandlers>

<!--plugins插件之 分頁攔截器 -->
<plugins>
<plugin interceptor="com.xhm.util.PageInterceptor"></plugin>
</plugins>

<!--配置environment環境-->
<environments default="development">
<!-- 環境配置1,每個SqlSessionFactory對應一個環境 -->
<environment id="development1">
<!-- 事務配置 type= JDBC、MANAGED 1.JDBC:這個配置直接簡單使用了JDBC的提交和回滾設置。它依賴於從數據源得到的連接來管理事務范圍。
2.MANAGED:這個配置幾乎沒做什麼。它從來不提交或回滾一個連接。而它會讓容器來管理事務的整個生命周期(比如Spring或JEE應用伺服器的上下文)。 默認情況下它會關閉連接。然而一些容器並不希望這樣,因此如果你需要從連接中停止它,將closeConnection屬性設置為false -->
<transactionManager type="JDBC" />
<!-- <transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager> -->
<!-- 數據源類型:type = UNPOOLED、POOLED、JNDI 1.UNPOOLED:這個數據源的實現是每次被請求時簡單打開和關閉連接。它有一點慢,這是對簡單應用程序的一個很好的選擇,因為它不需要及時的可用連接。
不同的資料庫對這個的表現也是不一樣的,所以對某些資料庫來說配置數據源並不重要,這個配置也是閑置的 2.POOLED:這是JDBC連接對象的數據源連接池的實現,用來避免創建新的連接實例時必要的初始連接和認證時間。
這是一種當前Web應用程序用來快速響應請求很流行的方法。 3.JNDI:這個數據源的實現是為了使用如Spring或應用伺服器這類的容器,容器可以集中或在外部配置數據源,然後放置一個JNDI上下文的引用 -->
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xhm" />
<property name="username" value="root" />
<property name="password" value="root" />
<!-- 默認連接事務隔離級別 <property name="" value=""
/> -->
</dataSource>
</environment>

<!-- 環境配置2 -->
<environment id="development2">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xhm" />
<property name="username" value="root" />
<property name="password" value="root" />
<!-- 在任意時間存在的活動(也就是正在使用)連接的數量 -->
<property name="poolMaximumActiveConnections" value="10" />
<!-- 任意時間存在的空閑連接數 -->
<property name="poolMaximumIdleConnections" value="5" />
<!-- 在被強制返回之前,池中連接被檢查的時間 -->
<property name="poolMaximumCheckoutTime" value="20000" />
<!-- 這是給連接池一個列印日誌狀態機會的低層次設置,還有重新嘗試獲得連接,這些情況下往往需要很長時間(為了避免連接池沒有配置時靜默失敗) -->
<property name="poolTimeToWait" value="20000" />
<!-- 發送到數據的偵測查詢,用來驗證連接是否正常工作,並且准備接受請求。 -->
<property name="poolPingQuery" value="NO PING QUERY SET" />
<!-- 這是開啟或禁用偵測查詢。如果開啟,你必須用一個合法的SQL語句(最好是很快速的)設置poolPingQuery屬性 -->
<property name="poolPingEnabled" value="false" />
<!-- 這是用來配置poolPingQuery多次時間被用一次。這可以被設置匹配標準的資料庫連接超時時間,來避免不必要的偵測 -->
<property name="poolPingConnectionsNotUsedFor" value="0" />
</dataSource>
</environment>

<!-- 環境配置3 -->
<environment id="development3">
<transactionManager type="JDBC" />
<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jndi/mybatis" />
<property name="env.encoding" value="UTF8" />
<!-- <property name="initial_context" value=""/> <property name="env.encoding"
value="UTF8"/> -->
</dataSource>
</environment>
</environments>

<!-- 映射文件,mapper的配置文件 -->
<mappers>
<!--直接映射到相應的mapper文件-->
<mapper resource="com/xhm/mapper/UserMapper.xml"/>
<!--掃描包路徑下所有xxMapper.xml文件-->
<package name="com.xhm.mapper"/>
</mappers>

</configuration>

『貳』 mybatis通過windows方式連接sqlserver資料庫配置文件怎麼寫

不驗證用戶名密碼的登錄方式可以在JDBC串里實現,但也要依託某種驗證方式,例如下面這個使用k8s驗證的連接串的寫法:
jdbc:sqlserver://;servername=server_name;integratedSecurity=true;authenticationScheme=JavaKerberos
把配置文件里原有的dataSource裡面的url改了

<property name="url" value="jdbc:sqlserver://;servername=server_name;integratedSecurity=true;authenticationScheme=JavaKerberos"/>

『叄』 mybatis settings配置在哪個標簽下

typeAliases標簽是寫實體類的別名,寫了之後可以在寫Sql配置文件例如<select>標簽中的屬性就可以不用寫實體的具體路徑直接用別名就可以了,可以簡化代碼給看個例子:沒有別名這樣寫<selectresultType=「com.sjh.entity.VoteUser」>寫了別名就可以這樣寫<selectresultType=「VoteUsers」>直接寫別名就可以不用再寫實體的路徑了,VoteUsers就能在任何地方代替「com.sjh.entity.VoteUser」被使用。
如果很多屬性涉及到實體類,直接寫別名很方便的。
說刪了程序照樣跑,寫配置的時候一定是沒有應用到別名,都寫得實體路徑。
希望通過一番解釋能明白這個標簽的用途。

『肆』 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暫時不用創建)如下:

『伍』 mybatis各階段的詳解

比如我們在引入了jdbc的配置文件使用了properties標簽,引入jdbc有什麼好處?,可以在配置文件中統一管理
內容而不是在很多個文件改來改去,而且在核心配置文件中把資料庫連接相關的寫死,顯然是硬編碼的所以我們用配置文件代替 nice!!!

你可能注意到了上面的寫法 用前綴jdbc. 可以很好地將他們與其他的變數區分開,(可以從名字很容易看出是jdbc相關的數據,不至於和同名變數搞混因為username這種可能
不止會出現在資料庫的連接)

上面的代碼中引入配置文件的部分為
可以從上面看到寫法:

下面這段就是用來設置類的別名:

那麼問題來了,為什麼要有類的別名這種操作??

因為在映射文件中每次都要寫全類名顯然有點麻煩比如下面這樣:

一個項目是會有很多個映射文件的為了方便,所以類別名就出現了。可以在核心配置文件寫介面類和對應的別名

這樣就可以在映射文件的命名空間里可以直接寫User(對大小沒有要求也可以是user; 其實可以比這更加簡單,也是我們在實際開發中常用的寫法
就是將整個包寫成別名的形式,如果不寫alias屬性默認為類名(不區分大小寫),這樣就容易多了,我們只需一行代碼,便可以在所有的映射文件命名空間
中直接寫對應的類名

引入核心的配置文件

首先需要思考的這里是映射文件的引入,我們正常的一個項目的資料庫是有很多個表組成的那麼每一張表對應一個mapper介面,每個介面對應一個映射文件,那麼就需要導入大量的映射文件,還容易漏掉-->

上面這種以包的形式的導入非常方便,不用每次新建一個介面就要導入它的映射文件,但是上面這種寫法需要 注意 一些問題:

如果你在映射文件中編寫查詢語句的sql,但是粗心的你忘記了設置返回類型會在控制台拋異常且會看到這樣的說明:
It's likely that neither a Result Type nor a Result Map was specified.

下面只是指定返回類型的一種方式:resultType,還有 resultMap
它們的區別:

查詢的標簽必須指定resultType或resultMap

com.kobe.mybatis 獲取參數的兩種方式:${} 和 #{}

上面是使用了 #{}寫法相當於原生jdbc的佔位符,這個前面已經提到過了所以不多贅述, 需要注意的是#{}裡面的變數名可以是任意的username規范顯然很好,但是aaaa也沒錯因為只是用來佔位的;
還有就是在使用${}時注意''單引號問題,因為${}是字元拼接的方式,所以需要注意!!

傳輸參數時有多個參數時

在測試代碼里通過傳入兩個參數分別為 username和password 但是在上面代碼的(映射文件里的部分代碼)執行失敗,(sql語句未能解析)
報錯:
Cause: org.apache.ibatis.binding.BindingException: Parameter 'username' not found. Available parameters are [arg1, arg0, param1, param2]

可以從錯誤提示的信息不難發現我們的參數在映射文件里未能真正地接受到,可以用[arg1, arg0, param1, param2] 的方式獲取,mybatis將參數放到map容器可以通過建arg0,agr1..的方式
獲取參數(也可以是param1,param2..)
將上面的代碼改動:

需要注意的是:使用${}時需要手動添加''才能正常訪問,因為他的處理方式是字元串的拼接

做了改動之後結果很感人!!
User{id=6, userName='旺財', age=20, password='cwlz'}

可以直接通過鍵訪問相對應的值(通過自己的方式訪問到數據,上面的形式是mybatis默認提供的map和mybatis默認的提取指的方式 arg0,arg2...)
當需要傳多個參數時將他們放到一個map容器,然後將map傳給對應的方法(模擬mybatis的做法,就可以在sql語句中直接通過鍵訪問到值)代碼如下:

映射文件中的部分代碼 :

通過鍵直接獲取值,注意:使用${}時不要忘了單引號!!!!

當參數以實體對象的形式傳參時如何解決?
只需要通過#{}以屬性名的方式訪問!

所以代碼的編寫一定要規范,才能減少這種錯誤!!!

一定要和註解中的參數名一一對應!!!

如果查詢的結果只有一個,也可以通過Map集合接收,欄位名為鍵欄位的值為值:{password=0000, id=3, userName=圖區, age=20}

java.lang.Ingeger --> int ,Integer

int --> _int,_Integer

Map --> map

String --> string

注意:

所以在批量刪除的案例:需要注意的是不能使用#{} 因為它是會自動添加'' 所以在批量刪除的語句中我們要使用${}

若欄位和屬性名不一致 ,則可以通過resultMap設置自定義映射

在mybatis的核心配置文件用下面的代碼將 資料庫中命名的規范 (user_name) 轉換為 java中的命名規范 (userName)

就是手動設置屬性與欄位的映射關系:
如果設置了手動的設置屬性和欄位的映射關系,注意主鍵使用 id 標簽,普通欄位使用 result標簽,就算屬性和欄位名一一對應,只要
用了這種方式就 必須要寫全 !!!

一對多的查詢:

通過分步查詢實現:


多條件的查詢

if 根據標簽中test的屬性所對應的表達式決定標簽中的內容是否拼接到sql語句中

上面的where後面的 1=1 是細節,因為當where後面的條件都為空時就成了 select * from t_user where
顯然這種sql語句是有問題的,還有一種情況就是當userName為null時語句就成了 select * from t_user where and age=#{age}
這也是錯的,所以在where後加一個恆成立的條件不僅不會影響查詢結果,而且沒有會在特定情況時sql語句是會報錯的所以很有必要

where 當where標簽中有內容時,會自動生成where關鍵字,並且將內容前多餘的and 或者or去掉
當where中沒有內容時,此時where標簽沒有任何效果 就是不會生成關鍵字 注意:在寫條件時不能在後面加and or 這個在下一條語句無效時mybatis不會幫你去掉!

相當於 if else

一個案例 -->就是當我們需要批量刪除一些東西時(參數以數組的形式傳入)

sql 片段: 在我們的查詢語句不能在實際開發中也一直寫 *;因為我們要按需查找,不必將不需要的也查詢出來,我們可以將我們平常查詢次數較多的欄位
放在sql片段內,可以在需要查詢時直接進行引用!

緩存,這個術語我們聽過很多次,在web階段時訪問網頁時有緩存機制!
現在sql的查詢時也有緩存機制,有一級緩存,一級緩存是默認開啟的,一級緩存的范圍時sqlSession,將我們查詢到的數據先進行緩存,若下次有相同的查詢時不用重新
訪問資料庫,可以直接從緩存中取出!!!!

手動清空緩存 sqlSession.clearCache();

在mapper配置文件中添加cache標簽可以設置一些屬性:

逆向工程就是不難理解,我們之前都是由實體類到資料庫,而逆向類就是通過資料庫表生成實體類,

『陸』 如何配置mybatis開發環境

1、打開MyEclipse或者Eclipse,新建一個JavaProject項目mybatis

謝謝採納

閱讀全文

與mybatis資料庫配置文件相關的資料

熱點內容
編程怎麼做3d生存游戲 瀏覽:955
word使用教程下載 瀏覽:295
電腦文件平鋪圖片默認大小 瀏覽:115
文件查看設置信息失敗 瀏覽:668
編程如何編出烏鴉喝水的課文 瀏覽:20
國家反詐app報案助手怎麼使用 瀏覽:439
秘密文件丟失多少天 瀏覽:237
js中csstext 瀏覽:382
目標文件名過長復制 瀏覽:892
樂動力計步器老版本 瀏覽:933
壓縮文件鏈接怎麼編輯 瀏覽:808
如何鎖定PDF文件里的圖章 瀏覽:89
資料庫超時是什麼 瀏覽:649
文件怎麼改整列內容 瀏覽:764
360壓縮文件發郵件空白 瀏覽:813
上哪裡查自己大數據 瀏覽:907
編程語言怎麼學車 瀏覽:189
編程該怎麼學才能先找工作 瀏覽:524
文件刻制光碟多少錢 瀏覽:861
校園網的網路組成結構 瀏覽:862

友情鏈接