MyBatis 配置文件

MyBatis 配置文件(`mybatis-config.xml`)核心组成部分

1. `<configuration>`(根节点)

- **作用**:所有配置的顶层容器,包含所有子配置项。

- **示例**:

  <configuration>

      <!-- 其他配置 -->

  </configuration>

  

2. `<properties>`(属性配置)

- **作用**:加载外部属性文件或定义属性,支持动态替换配置值(如 `${key}`)。

- **加载方式**:

  - 外部文件:`<properties resource="db.properties"/>` 或 URL。

  - 直接定义:`<property name="key" value="value"/>`。

- **示例**:

  <properties resource="db.properties">

      <property name="jdbc.username" value="root"/>

  </properties>

  

3. `<settings>`(全局行为设置)

- **作用**:控制 MyBatis 核心行为(如缓存、日志、命名规则)。

- **常见设置**:

  - `logImpl`:日志实现(如 `SLF4J`、`LOG4J`、`STDOUT_LOGGING`)。

- **示例**:

  <settings>

      <setting name="logImpl" value="SLF4J"/>

  </settings>

  

4. `<typeAliases>`(类型别名)

- **作用**:为 Java 类定义短别名,简化 Mapper 中类型引用。

- **定义方式**:

  - 单独定义:`<typeAlias type="com.example.User" alias="User"/>`。

  - 批量扫描:`<package name="com.example.model"/>`。

- **效果**:用别名(如 `User`)替代全限定类名。

  

5. `<objectFactory>`(对象工厂)

- **作用**:自定义对象实例化逻辑(高级用法,默认无需修改)。

- **示例**:

  <objectFactory type="com.example.CustomObjectFactory">

      <property name="someProperty" value="100"/>

  </objectFactory>

  

6. `<plugins>`(插件/拦截器)

- **作用**:拦截 MyBatis 核心行为(如分页、SQL 审计)。

- **示例**:自定义插件实现特定功能(如分页插件)。

7. `<environments>`(环境配置)

- **作用**:定义多套数据库环境(开发、测试、生产),支持切换。

- **子节点**:

  - `<transactionManager>`:事务管理(`JDBC` 或 `MANAGED`)。

  - `<dataSource>`:数据源(`POOLED`、`UNPOOLED`、`JNDI`)。

- **示例**:

  <environments default="development">

      <environment id="development">

          <transactionManager type="JDBC"/>

          <dataSource type="POOLED">

              <property name="driver" value="com.mysql.cj.jdbc.Driver"/>

              <property name="url" value="jdbc:mysql://localhost:3306/elearning"/>

              <property name="username" value="root"/>

              <property name="password" value="123456"/>

          </dataSource>

      </environment>

  </environments>

  ```

8. `<databaseIdProvider>`(多数据库支持)

- **作用**:根据数据库类型(如 MySQL、Oracle)执行不同 SQL。

- **用法**:通过 `databaseId` 在 Mapper 中指定 SQL。

- **示例**:

  <databaseIdProvider type="DB_VENDOR">

      <property name="MySQL" value="mysql"/>

      <property name="Oracle" value="oracle"/>

  </databaseIdProvider>

  

  <select id="getUser" resultType="User" databaseId="mysql">

      SELECT * FROM user

  </select>

  

9. `<mappers>`(映射器注册)

- **作用**:指定 Mapper 接口或 XML 文件,加载 SQL 映射。

- **注册方式**:

  - XML 文件:`<mapper resource="com/example/mapper/UserMapper.xml"/>`。

  - 接口类:`<mapper class="com.example.mapper.UserMapper"/>`。

  - 包扫描:`<package name="com.example.mapper"/>`。

- **示例**:

  <mappers>

      <package name="com.example.mapper"/>

  </mappers>

 

注意事项:

1. **配置顺序**:必须遵循固定顺序(`properties` → `settings` → `typeAliases` → ... → `mappers`),否则解析报错。

2. **动态属性**:`${key}` 用于引用 `properties` 定义的属性。

3. **环境切换**:通过 `environments` 的 `default` 属性指定默认环境。

4. **Mapper 加载**:确保接口与 XML 文件名和路径一致(若使用接口方式)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值