MyBatis的元素、优化、别名、设置和映射
元素和优化:可以在代码中体现
mybatis-config.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration>
<!--引入外部配置文件-->
<properties resource="db.properties">
<property name="username" value="root"/>
<property name="password" value="12345678"/>
</properties>
<typeAliases>
<typeAlias type="com.kuang.pojo.User" alias="user"/>
</typeAliases>
<environments default="development">
<!--子元素节点:environment,具体的一套环境,通过设置id进行区别,id保证唯一!-->
<environment id="development">
<!--事务管理器,在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"),都不需要设置任何属性。-->
<transactionManager type="JDBC"/>
<!--数据源:JDBC数据源接口来配置JDBC连接对象的资源。数据源是必须配置的。有三种内建的数据源类型type="[UNPOOLED|POOLED|JNDI]")-->
<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>
<!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
<mappers>
<mapper resource="com/kuang/dao/UserMapper.xml"/>
</mappers>
</configuration>
db.properties配置文件
//配置文件优先级问题(配置文件优先)。新特性:使用占位符
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
username=root
password=12345678
typeAliases别名
类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全
限定名的冗余。
<!--配置别名,注意顺序--> <typeAliases>
<typeAlias type="com.kuang.pojo.User" alias="User"/>
</typeAliases>
当这样配置时, User 可以用在任何使用 com.kuang.pojo.User 的地方。 也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:
<typeAliases>
<package name="com.kuang.pojo"/>
</typeAliases>
每一个在包 com.kuang.pojo 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的 非限定类名来作为它的别名。
若有注解,则别名为其注解值。见下面的例子:
@Alias("user")
public class User {
... }
设置
- 设置(settings)相关 => 查看帮助文档
懒加载(lazyLoadingEnabled)
日志实现(logImpl)
缓存开启关闭(cacheEnabled) - 一个配置完整的 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>
映射
注意点:映射常用的有三种实现方式。
注意点:
- 接口和他的Mapper配置文件必须同名
- 接口和他的Mapper配置文件必须在同一个包下
mybatis-config.xml配置
<!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
<mappers>
<!--方式一:使用相对于类路径的资源引用,推荐使用-->
<mapper resource="com/kuang/dao/UserMapper.xml"/>
<!--方式二:使用映射器接口实现类的完全限定类名 -->
<!--<mapper class="com.kuang.dao.UserMapper"/>-->
<!--方式三:将包内的映射器接口实现全部注册为映射器-->
<!--<package name="com.kuang.dao"/>-->
</mappers>