MyBatis-配置解析

Mybatis配置解析

1. 配置文件

mybatis-config.xml

configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)

注意标签的顺序
在xml文件中所有的标签顺序都有一个先后顺序
The content of element type "configuration" must match "(
properties?,
settings?,
typeAliases?,
typeHandlers?,
objectFactory?,
objectWrapperFactory?,
reflectorFactory?,
plugins?,
environments?,
databaseIdProvider?,
mappers?

)".

2. 环境配置(environments)

mybatis 可以配置成适应多种环境
不过要记住:尽管可以配置多个环境,但是每个SqlSessionFactory实例只能选择一种环境。

transactionManager(事务管理器)有两种

  • JDBC:这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。【默认】
  • MANAGED

dataSource(数据源)jdbc、c3p0等
连接池类型有三种type=

  • UNPOOLED----没有连接池
  • POOLED ------池【默认 】
  • JNDI-----------正常链接
    池:用完可以回收
<!--环境,development默认-->
<environments default="test">
<environment id="development">
<!--事物管理器-->
<transactionManager type="JDBC"/>
<!--数据源-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>

3. 属性(properties)

我们可以通过properties属性来实现引用配置文件,具体看后面

这些属性都是可外部配置且可动态替换的,既可以在典型的Java属性文件中配置,亦可以通过properties元素的子元素来传递。【db.properties】
编写一个文件
db.properties

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

Tips:尽量加上jdbc.前缀最为区分,为避免在以后项目上线和Windows、Linux的环境配置有相同的名字产生影响。
在核心配置文件中引入

<!--属性,引入外部配置文件=后边是路径-->
<properties resource="db.properties">
<!--引入的配置文件中可以增加属性。如果外部缺少,可以用property写出来,但优先使用外部配置文件中的username/password-->
<property name="username" value="root"/>
<property name="password" value="123456"/>
</properties>
  • 可以直接引入外部文件
  • 可以在其中增加一些属性配置
  • 如果两个文件有同一个字段,优先使用外部
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>

4. 类型别名(typeAliases)

类型别名是为Java类型设置一个短的名字。它只和XML配置有关,存在的意义仅在于用来减少类完全限定名的沉余。
第一种写法:起一个固定名

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

第二种写法:也可以指定一个包名,MyBatis会在包名下面搜索需要的JavaBean,比如:扫描实体类的包,它的默认别名就为这个类的 类名,首字母小写(建议),但也可以大写。

<!--可以给实体类起别名-->
<typeAliases>
<package name="com.du.pojo" />
</typeAliases>

在实体类少的时候,使用第一种方式。
如果实体类多,使用第二种方式。
若有注解,则别名为其注解值。见下面的例子:

@Alias("author")
public class Author {
...
}

5. 设置(setting)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

  • 一下几个首先要认识的

  • 一个完整的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>

6. 其它配置

7. 映射器(mappers)

MapperRegistry:注册绑定我们的Mapper文件
每一个mapper.xml都需要在mybatis核心配置文件中注册
方式一:

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

方式二:不推荐使用

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper url="file:///var/mappers/BlogMapper.xml"/>
<mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>

方式三:

  • 注意点:
    • 接口和他的mapper配置文件必须同名
    • 接口和她的mapper配置文件必须在统一个包下
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

方式四:

  • 注意点:使用扫描包进行注册必须接口和配置文件同名
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>

END

posted @   生生灯火半杯月  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示