Mybatis框架(三)—核心配置文件

核心配置文件

配置文件结构

configuration(配置)

-properties(属性) 重点
-settings(设置) 重点
-typeAliases(类型别名) 重点
-environments(环境配置)
--environment(环境变量)
--transactionManager(事务管理器)
--dataSource(数据源)
-mappers(映射器) 重点

属性(properties)

通过properties属性来引用配置文件

注意点:在xml中,所有的标签都规定其顺序,否则会报错!

image

方式(一):

1、在resources目录下创建【db.properties】文件

image

2、编写db.properties配置文件:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123456

3、在mybatis核心配置文件中映入db.properties配置文件

image

<!--引入外部配置文件-->
<properties resource="db.properties" />

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

方式(二):

1、在resources目录下创建【db.properties】文件

image

2、编写db.properties配置文件:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&;useUnicode=true&;characterEncoding=UTF-8

3、在mybatis核心配置文件中映入db.properties配置文件

image

<properties resource="db.properties">
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</properties>

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

类型别名(typeAliases)

  • 类型别名是为 Java 类型设置一个短的名字。
  • 存在的意义仅在于用来减少类完全限定名的冗余。

方式一:给实体类起别名

<!--可以给实体类起别名,别名为User-->
<typeAliases>
    <typeAlias type="com.kuang.pojo.User" alias="User"/>
</typeAliases>

方式二:给包起别名

<--扫描实体类的包,它的默认别名就为这个类的类名,首字母小写!-->
<typeAliases>
    <package name="com.kuang.pojo"/>
</typeAliases>

image

方式三:用注解给该类起别名

@Alias("user")
public class User {}

设置(settings)

这是MyBatis中极为重要的调整设置,它们会改变MyBatis的运行时行为。下表描述了设置中各项设置的含义、默认值等。

设置名 描述 有效值 默认值
cacheEnabled 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 true false
lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。 true false
useColumnLabel 使用列标签代替列名。实际表现依赖于数据库驱动,具体可参考数据库驱动的相关文档,或通过对比测试来观察。 true false
useGeneratedKeys 允许 JDBC 支持自动生成主键,需要数据库驱动支持。如果设置为 true,将强制使用自动生成主键。尽管一些数据库驱动不支持此特性,但仍可正常工作(如 Derby)。 true false
mapUnderscoreToCamelCase 是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。 true false
logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 [SLF4J] [LOG4J] [LOG4J2] [JDK_LOGGING] [COMMONS_LOGGING] [STDOUT_LOGGING] [NO_LOGGING] 未设置

image

一个配置完整的 settings 元素的示例如下:

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

映射器(mappers)

MapperRegistry:注册绑定我们的Mapper文件

方式一: 【推荐使用】

<!-- 使用相对于类路径的资源引用 -->
<mappers>
    <mapper resource="com/kuang/dao/UserMapper.xml"/>
</mappers>

方式二:使用class文件绑定注册

<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
    <mapper class="com.kuang.dao.UserMapper"/>
</mappers>

方式二和方式三注意点:

  • 接口和他的Mapper配置文件必须同名!
  • 接口和他的Mapper配置文件必须在同一个包下!
  • 如图:
    image

方式三:使用扫描包进行注入绑定

<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
    <package name="com.kuang.dao"/>
</mappers>
posted @ 2021-06-15 03:28  鬼谷仙生  阅读(103)  评论(0编辑  收藏  举报