MyBatis 系列:(二)配置文件

MyBatis 全局配置文件

涉及代码:mybatis

全局配置文件中可配置子标签有: propertiessettingstypeAliasestypeHandlersobjectFactoryobjectWrapperFactoryreflectorFactorypluginsenvironmentsdatabaseIdProvidermappers

properties

使用标签 properties 可引入 properties 配置文件,引入后就可以 ${属性名} 的方式获取属性值。

标签 properties 属性有:resource 引入类路径下的资源;url 引入网络路径或磁盘路径的资源。

也可以结合子标签 property 设置属性:name 为属性名;value 为属性值。

1、示例:引入数据源配置

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

2、引用属性

<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>

settings

标签 settings 中可设置多个子标签 setting,用来修改配置项的默认值。

一个 setting 标签用来配置一个设置项,name 为设置项名,value 为设置项值。

配置项参考:https://mybatis.org/mybatis-3/configuration.html#settings

1、示例:开启驼峰命名自动映射,将表结构的字段 USER_NAME 映射到 Java 实体类属性 userName

<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

typeAliases

类型别名,使用一个简短的别名来代替 Java 类的全类名。引用该类时直接使用别名代替。

标签 typeAliases 中可配置多个子标签 typeAlias 或者 package

子标签 typeAlias 设置一个类的别名。属性 type 需要设置别名的类全类名;属性 alias 设置类的别名,可选项,不设置此属性,则别名为类名且不区分大小写。

1、示例

<typeAliases>
    <typeAlias type="com.don.learn.mybatis.bean.User"/>
    <typeAlias type="com.don.learn.mybatis.bean.Dept" alias="_dept"/>
</typeAliases>

子标签 package 为某个包下的所有类批量设置别名,默认的别名为简单类名小写。

2、示例

<typeAliases>
    <package name="com.don.learn.mybatis.bean"/>
</typeAliases>

在批量设置别名时,想为某个类指定特定的别名,可以使用 @Alias 注解为某个类指定别名。

3、示例

@Alias("_user")
public class User{
    //...
}

MyBatis 提供了常见的 Java 类的类型别名。

参考:https://mybatis.org/mybatis-3/configuration.html#typealiases

typeHandlers

MyBatis 在处理 SQL 参数映射或从结果集中取值时,都会用类型处理器将一个值以合适的方式转换成 Java 类型。

其自带了大多数的类型处理器。

参考:https://mybatis.org/mybatis-3/configuration.html#typeHandlers

自定义类型处理器

内置的类型处理器不满足时,可以自定义类型处理器,两种方式:

  • 实现 org.apache.ibatis.type.TypeHandler 接口
  • 继承 org.apache.ibatis.type.BaseTypeHandler

1、示例

@MappedTypes(LocalDate.class)
@MappedJdbcTypes(value = JdbcType.DATE, includeNullJdbcType = true)
public class LocalDateTypeHandler extends BaseTypeHandler<LocalDate> {

  @Override
  public void setNonNullParameter(PreparedStatement ps, int i, LocalDate parameter, JdbcType jdbcType)
          throws SQLException {
    ps.setDate(i, Date.valueOf(parameter));
  }

  @Override
  public LocalDate getNullableResult(ResultSet rs, String columnName) throws SQLException {
    Date date = rs.getDate(columnName);
    return getLocalDate(date);
  }

  @Override
  public LocalDate getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
    Date date = rs.getDate(columnIndex);
    return getLocalDate(date);
  }

  @Override
  public LocalDate getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
    Date date = cs.getDate(columnIndex);
    return getLocalDate(date);
  }

  private static LocalDate getLocalDate(Date date) {
    if (date != null) {
      return date.toLocalDate();
    }
    return null;
  }
}

2、装配自定义类型处理器

<!--mybatis-config.xml-->
<typeHandlers>
    <typeHandler handler="com.don.learn.mybatis.typehandler.LocalDateTypeHandler"/>
</typeHandlers>

1)通过泛型表示该类型处理器处理的 Java 类型。或通过2种方式配置:

  • 在全局配置文件配置类型处理器时,标明 javaType 属性 javaType="LocalDate"
  • 在类型处理器的类上标注 @MappedTypes 注解指定其关联的 Java 类型

2)通过2种方式来指定关联的 JDBC 类型:

  • 在全局配置文件配置类型处理器时,标明 jdbcType 属性 jdbcType="DATE"
  • 在类型处理器的类上标注 @MappedJdbcTypes 注解指定其关联的 JDBC 类型

objectFactory

MyBatis 在处理结果映射时,通过使用对象工厂 ObjectFactory 实例来完成结果实例化。

默认的对象工厂在实例化目标类时,通过默认的无参构造方法,或者通过对应参数映射来调用有参构造方法完成实例化。

plugins

可以通过插件来修改 MyBatis 的核心执行过程。插件通过动态代理机制,可以介入四大对象的方法的执行。

在映射语句执行过程中的某一点进行拦截调用。默认情况下,允许使用插件来拦截的方法调用包括:

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)

使用插件只实现 Interceptor 接口,并指定要拦截的方法,在 intercept 方法编写处理。

然后在全局配置文件进行注册。

<plugins>
    <plugin interceptor="com.don.learn.mybatis.plugin.MyPlugin"/>
</plugins>

environments

标签 environments 用于配置环境,可以配置多个环境,使用属性 default ,设置默认使用的环境的 id

标签 environment 设置一个连接数据库的环境信息。必填属性 id 表示该环境的唯一标识。内部必须包含两个子标签 transactionManagerdataSource

transactionManager :设置事务管理方式。默认有 2 种类型的事务管理器 JDBCMANAGED

  • JDBCJdbcTransactionFactory 类的别名。直接使用 JDBC 的提交和回滚功能
  • MANAGEDManagedTransactionFactory 类的别名。该配置不提交或回滚连接,而是让容器来管理事务的整个生命周期

dataSource :设置数据源。默认有 3 种自带的数据源类型 UNPOOLEDPOOLEDJNDI

  • UNPOOLEDUnpooledDataSourceFactory 类的别名。即不使用连接池的数据源,每次请求都打开和关闭连接
  • POOLEDPooledDataSourceFactory 类的别名。使用连接池
  • JNDIJndiDataSourceFactory 类的别名。使用在 EJB 或应用服务器容器中

mappers

用于将 SQLXML 映射文件注册到全局配置文件中。

1、类路径的资源引用

<mappers>
    <mapper resource="mappers/UserMapper.xml"/>
</mappers>

2、映射器接口实现类的全类名。映射文件必须和接口同名,并且放在与接口同一目录

<mappers>
    <mapper class="com.don.learn.mybatis.mapper.UserMapper"/>
</mappers>

3、将某包内的映射器接口实现全部注册为映射器

<mappers>
    <!--
		以包为单位,将包下所有的映射文件引入核心配置文件
        注意:此方式必须保证mapper接口和mapper映射文件必须在相同的包下
    -->
    <package name="com.don.learn.mybatis.mapper"/>
</mappers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis 是一款优秀的持久层框架,它通过 XML 配置文件来完成与数据库的交互。在 MyBatisXML 配置文件中,主要包括以下几个部分: 1. 数据库连接相关的配置:首先需要配置数据库连接相关的信息,比如数据库驱动、数据库地址、用户名、密码等。这些信息用于与数据库建立连接,以便于后续的数据操作。 2. 数据映射相关的配置MyBatis 的核心功能之一就是将 Java 对象与数据库中的表进行映射。在 XML 配置文件中,需要配置每个表对应的实体类、数据库表名,以及各个字段与实体类属性的映射关系,包括字段名、属性名、属性类型等。 3. SQL 语句的配置:在 XML 配置文件中,可以定义各种 SQL 语句,包括查询语句、插入语句、更新语句、删除语句等。对于每个 SQL 语句,需要指定一个唯一的 ID,在代码中通过该 ID 来调用对应的 SQL 语句。SQL 语句中可以使用动态参数、条件判断等功能,以满足不同的查询需求。 4. 数据库事务的配置:如果需要进行数据库事务管理,可以在 XML 配置文件中指定事务管理器的类型、事务传播行为、事务超时时间等。这样可以确保在数据库操作过程中的一系列操作要么全部成功提交,要么全部失败回滚。 通过这些 XML 配置文件MyBatis 可以根据开发者的需求完成不同的数据库操作,大大简化了数据库的访问过程,提高了开发效率。同时, MyBatis 也提供了注解的方式来配置数据库操作,更加方便快捷。 ### 回答2: MyBatis是一种开源的持久层框架,它将数据库操作与Java对象的映射进行了有效地整合。在MyBatis中,我们使用XML文件进行配置,该配置文件主要包括与数据库连接相关的信息、映射文件的定义以及其他一些可选项。 首先,我们需要在配置文件中指定数据库连接信息,如数据库驱动、连接URL、用户名和密码。这些信息将被MyBatis使用以建立与数据库的连接。 接下来,我们需要定义映射文件,该文件由多个<sqlMap>标签组成。每个<sqlMap>标签对应一个数据库表或一个数据库操作。在<sqlMap>标签内部,我们可以定义该数据库操作所对应的SQL语句,如SELECT、INSERT、UPDATE和DELETE等。 在映射文件中,我们使用<select>、<insert>、<update>和<delete>等标签来定义对应的SQL操作。在这些标签内部,我们可以指定SQL语句以及与SQL语句相关的参数和结果映射。 除了SQL语句的定义,我们还可以在映射文件中定义一些可选项,如缓存策略、动态SQL、分页和嵌套查询等。这些可选项可以提高应用程序的性能和可维护性。 最后,我们需要在Java代码中使用MyBatis的API来加载配置文件并执行数据库操作。通过MyBatis提供的API,我们可以方便地执行SQL语句、获取返回结果,并实现数据库的增删改查等操作。 总而言之,MyBatisXML配置文件是用来配置数据库连接信息、映射文件以及其他可选项的。通过合理配置XML文件,我们可以实现简洁高效的数据库操作,提高应用程序的性能和可维护性。 ### 回答3: MyBatis是一种Java持久化框架,它通过将SQL语句与Java代码分离来简化数据库操作。MyBatisXML配置文件是用来定义与数据库交互的映射关系。 在MyBatisXML配置文件中,需要定义数据源和数据库连接信息,以便MyBatis能够连接到数据库。通常情况下,我们会配置连接池来优化数据库连接的性能。 另外,在XML配置文件中,还需要定义映射关系。这个映射关系指的是数据库表和Java对象之间的映射关系。在映射配置中,我们需要指定哪个表对应哪个Java对象,以及如何将表中的列映射到Java对象的属性上。 在映射配置中,我们可以使用SQL语句来定义数据库操作,包括查询、插入、更新和删除。XML配置文件中的SQL语句支持动态SQL,可以根据参数的不同来动态生成SQL语句,这样可以提高代码的灵活性和可重用性。 此外,MyBatisXML配置文件还可以配置缓存、插件和事务管理等。缓存可以提高查询的性能,插件可以扩展MyBatis的功能,而事务管理可以保证数据库操作的一致性和完整性。 总的来说,MyBatisXML配置文件是用来定义数据库连接、映射关系和SQL语句等信息的。通过配置文件,我们可以灵活地操作数据库,并且实现代码与SQL语句的分离,提高了代码的可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值