MyBatis框架

3.3 settings设置

  • 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
  • 包含如下的setting设置:

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

 

3.4 typeAliases 别名处理

  • 类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类。

<typeAliases>

                 <typeAlias type="com.atguigu.mybatis.beans.Employee"

                   alias="emp"/>

</typeAliases>

 

 

  • 类很多的情况下,可以批量设置别名这个包下的每一个类创建一个默认的别名,就是简单类名小写

<typeAliases>

                 <package name="com.atguigu.mybatis.beans"/>

</typeAliases>

  • MyBatis已经取好的别名

3.5 typeHandlers 类型处理器

  • 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型
  • MyBatis中提供的类型处理器:
  • 日期和时间的处理,8以前一直是个头疼的问题。我们通常使用JSR310规范领导者Stephen Colebourne创建的Joda-Time来操作。1.8已经实现全部的JSR310规范了
  • 日期时间处理上,我们可以使用MyBatis基于JSR310(Date and Time API)编写的各种日期时间类型处理器。
  • 4以前的版本需要我们手动注册这些处理器,以后的版本都是自动注册的,如需注册,需要下载mybatistypehandlers-jsr310,并通过如下方式注册
  • 自定义类型转换器
  • 我们可以重写类型处理器或创建自己的类型处理器来处理不支持的或非标准的类 型
  • 步骤
  • 实现apache.ibatis.type.TypeHandler接口或者继承org.apache.ibatis.type.BaseTypeHandler
  • 指定其映射某个JDBC类型(可选操作)
  • 在mybatis全局配置文件中注册

3.6 plugins 插件机制

  • 插件是MyBatis提供的一个非常强大的机制,我们可以通过插件来修改MyBatis的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行
  • 四大对象:

Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)

 

ParameterHandler (getParameterObject, setParameters)

 

ResultSetHandler (handleResultSets, handleOutputParameters)

 

StatementHandler (prepare, parameterize, batch, update, query)