入门MyBatis的XML配置文件

222 阅读2分钟

XML配置文件

Configuration.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<!--这是XML 头部的声明,它用来验证 XML 文档的正确性。-->
<!---->
<configuration>
  <typeAliases>
    <typeAlias alias="Blog" type="com.pojo.Blog"/>
      <!--类型别名-->
      <!--也可以使用包名 <package name="com.pojo"/> 会去搜索对应的Java Bean-->
      <!--还可以使用注解在对应的类上例如: @Alias("blog")-->
  </typeAliases>
  <environments default="development">
    <environment id="development">
        <!--用于设置开发环境的配置信息默认选择了development。-->
        <!--可以新建不同的开发环境,environments会根据id进行匹配-->
      <transactionManager type="JDBC"/>
         <!--MyBatis 中有两种类型的事务管理器-->
<!--其中JDBC是Java数据库连接的默认类型,它使用JDBC驱动程序来管理和执行数据库事务。-->
<!--另一种MANAGED是一种托管事务的类型,让容器负责管理事务的整个生命周期。-->
      <dataSource type="POOLED">
          <!--有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")-->
          <!--UNPOOLED:每次请求时会打开和关闭连接,但是它不使用连接池管理数据库连接-->
          <!--POOLED:采用数据库连接池-->
          <!--JNDI:是Java平台的一个API,用于访问命名和目录服务。通过JNDI,开发人员可以将这些资源配置为统一的命名方式,并通过命名来访问它们,而不需要关注底层的具体实现细节。-->
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
          <!--属性参数-->
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/mapper/BlogMapper.xml"/>
      <!--映射器-->
<!-- 使用相对于类路径的资源引用 <mapper resoutce="org/mybatis/example/BlogMapper.xml"/>-->
<!--使用完全限定资源定位符(URL)<mapper url="file///var/mappers/BlogMapper.xml"/>-->
<!--使用映射器接口实现类的完全限定类名 <mapper class="org.mybatis.example.BlogMapper.xml"/>-->
<!--将包内的映射器接口全部注册为映射器 <package name="org.mybatis.example"/>-->
  </mappers>
</configuration>

mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--这是XML 头部的声明,它用来验证 XML 文档的正确性。-->
<mapper namespace="com.mapper.BlogMapper">
    <!--命名空间的作用并不大,是可选的。 但现在,随着命名空间越发重要,你必须指定命名空间。-->
</mapper>

命名解析: 为了减少输入量,MyBatis 对所有具有名称的配置元素(包括语句,结果映射,缓存等)使用了如下的命名解析规则。

  • 全限定名(比如 “com.mypackage.MyMapper.selectAllThings)将被直接用于查找及使用。
  • 短名称(比如 “selectAllThings”)如果全局唯一也可以作为一个单独的引用。 如果不唯一,有两个或两个以上的相同名称(比如 “com.foo.selectAllThings” 和 “com.bar.selectAllThings”),那么使用时就会产生“短名称不唯一”的错误,这种情况下就必须使用全限定名。

SQL 映射文件只有很少的几个顶级元素

ys.png

简单示例
<select id="mapper中的方法" parameterType="参数类型" resultType="结果类型">
    SQL语句
</select>
其中select可更改为另外3个元素
parameterType和resultType根据对应的需求进行更改
简单示例
上面代码中的parameterType和resultType可以替换成下面的类型
例如 <select id="mapper中的方法" parameterMap="pm" resultMap="rm">
<resultMap id="rm" type="com.pojo.Books">

</resultMap>
<parameterMap id="pm" type="com.pojo.Books">

</parameterMap>
默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。
要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:
<cache/>

提示:缓存只作用于 cache 标签所在的映射文件中的语句。如果你混合使用 Java API 和 XML 映射文件,在共用接口中的语句将不会被默认缓存。你需要使用 @CacheNamespaceRef 注解指定缓存作用域。

缓存

以下属性可以通过cache的元素来修改
<cache
  eviction="FIFO"
  flushInterval="60000"
  size="512"
  readOnly="true"/>

可用的清除策略有:

  • LRU – 最近最少使用:移除最长时间不被使用的对象。
  • FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
  • SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
  • WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。

默认的清除策略是 LRU。

提示:二级缓存是事务性的。这意味着,当 SqlSession 完成并提交时,或是完成并回滚,但没有执行 flushCache=true 的 insert/delete/update 语句时,缓存会获得更新。

官方文档 mybatis.org/mybatis-3/z…