目錄
- mybatis-config.xml 核心組態檔
- 1. environments元素
- 1.1 子元素environment
- 1.2 transactionManager 事務管理器(共兩種)
- 2. mappers 元素(定義映射SQL陳述句檔案)
- 3.properties
- 4. typeAliases(定義別名)
- 其他配置【設定】
- 1. environments元素
mybatis-config.xml 核心組態檔
mybatis-config.xml 包含的內容如下
- configuration(配置)
- properties(屬性)
- settings(設定)
- typeAliases(型別別名)
- typeHandlers(型別處理器)
- objectFactory(物件工廠)
- plugins(插件)
- environments(環境配置)
- environment(環境變數)
- transactionManager(事務管理器)
- dataSource(資料源)
- databaseIdProvider(資料庫廠商標識)
- mappers(映射器)
注意元素節點的順序!順序不對會報錯
1. environments元素
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/..."/>
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${driver}"/>
<property name="url" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${url}"/>
<property name="username" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${username}"/>
<property name="password" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${password}"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC">
<property name="..." value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/..."/>
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${driver}"/>
<property name="url" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${url}"/>
<property name="username" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${username}"/>
<property name="password" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${password}"/>
</dataSource>
</environment>
</environments>
- environments配置mybatis 多套環境,將sql 映射到多個不同的資料庫上,必須指定一個默認環境,即default="development"
1.1 子元素environment
其中dataSource 資料源(共三種內建的資料源型別)
type="[UNPOOLED|POOLED|JNDI]")
- unpooled:這個資料源的實作只是每次被請求時打開和關閉連接
- pooled:這種資料源的實作利用“池”的概念將 JDBC 連接物件組織起來 , 這是一種使得并發 Web 應用快速回應請求的流行處理方式,
- jndi:這個資料源的實作是為了能在如 Spring 或應用服務器這類容器中使用,容器可以集中或在外部配置資料源,然后放置一個 JNDI 背景關系的參考,
注: 資料源也有很多第三方的實作,比如dbcp,c3p0,druid等等....
1.2 transactionManager 事務管理器(共兩種)
<transactionManager type="[ JDBC | MANAGED ]"/>
2. mappers 元素(定義映射SQL陳述句檔案)
主要用于找到sql陳述句的檔案在哪里?可以使用不同的方式參考sql陳述句 具體的參考方式如下
- 使用相對路徑引入sql陳述句的檔案
<!-- 使用相對于類路徑的資源參考 -->
<mappers>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
- 使用完全限定資源定位符(URL)
<!-- 使用完全限定資源定位符(URL) -->
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
- 使用映射器介面實作類的完全限定類名,需要組態檔名稱和介面名稱一致,并且位于同一目錄下
<!--
使用映射器介面實作類的完全限定類名需要組態檔名稱和介面名稱一致,并且位于同一目錄下
-->
<mappers>
<mapper />
</mappers>
- 將包內的映射器介面實作全部注冊為映射器但是需要組態檔名稱和介面名稱一致,并且位于同一目錄下
<!--
將包內的映射器介面實作全部注冊為映射器.但是需要組態檔名稱和介面名稱一致,并且位于同一目錄下
-->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>
**mapper組態檔
主要用用關聯dao介面中的方法,并書寫sql陳述句 相當于實作了介面中的各個方法
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiezhr.dao.UserMapper">
<select id="getUserList" resultType="com.xiezhr.pojo.User">
select * from mybatis.user;
</select>
<insert id="addUser" parameterType="com.xiezhr.pojo.User">
insert into mybatis.user values(#{id},#{name},#{pwd})
</insert>
<update id="updateUserById" parameterType="int">
update mybatis.user set name='小頭爸爸' where id=#{id}
</update>
<delete id="deleteUserById" parameterType="int">
delete from mybatis.user where id=#{id}
</delete>
</mapper>
3.properties
- 我們都知道在java開發中,通過properties檔案來配置一些引數,這我們就要通過db.properties檔案來配置連接資料庫的各個屬性
具體步驟如下
(1)撰寫db.properties 檔案
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
password=123456
(2)在mybatis核心組態檔中加在外部組態檔來連接資料庫
<?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>
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${driver}"/>
<property name="url" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${url}"/>
<property name="username" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${username}"/>
<property name="password" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/xiezhr/Dao/UserMapper.xml"></mapper>
</mappers>
</configuration>
4. typeAliases(定義別名)
- 型別別名是為java型別這只一個短的名字,意義在于用來減少過長類名的冗余
(1)自定義javabean別名
<typeAliases>
<typeAlias type="com.xiezhr.pojo.User" alias="user"/>
</typeAliases>
如上配置之后就可以在任何地方用user 代替 com.xiezhr.pojo.User配置別名也可按照下面方式配置
(2)配置所有com.xiezhr.pojo 包下的Javabean別名為小寫的類名
<typeAliases>
<package name="com.xiezhr.pojo"/>
</typeAliases>
通過上述配置之后,以下的xml即等價
<select id="getUserList" resultType="user">
select * from mybatis.user;
</select>
<select id="getUserList" resultType="com.xiezhr.pojo.user">
select * from mybatis.user;
</select>
其他配置【設定】
設定常用的有如下幾個
- 懶加載
- 日志實作
- 快取的開啟與關閉
下面是一個完整的setting元素示例
<settings>
<setting name="cacheEnabled" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/true"/>
<setting name="lazyLoadingEnabled" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/true"/>
<setting name="multipleResultSetsEnabled" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/true"/>
<setting name="useColumnLabel" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/true"/>
<setting name="useGeneratedKeys" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/false"/>
<setting name="autoMappingBehavior" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/WARNING"/>
<setting name="defaultExecutorType" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/SIMPLE"/>
<setting name="defaultStatementTimeout" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/25"/>
<setting name="defaultFetchSize" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/100"/>
<setting name="safeRowBoundsEnabled" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/false"/>
<setting name="mapUnderscoreToCamelCase" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/false"/>
<setting name="localCacheScope" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/SESSION"/>
<setting name="jdbcTypeForNull" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/OTHER"/>
<setting name="lazyLoadTriggerMethods" value="https://www.cnblogs.com/xiezhr/archive/2023/05/05/equals,clone,hashCode,toString"/>
</settings>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/551716.html
標籤:其他
上一篇:C++容器(vector、deque、list、map)
下一篇:返回列表
