文章目录
Mybatis学习——核心配置类 mybatis-config.xml 标签详解
这里总结一波mybatis-config.xml中常用的的标签类
首先看一下原生的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>
其中只有一个大标签。在该大标签下有如下几种子标签。在学习完Mybatis后,发现能够使用得到的也只有mappers
,typeAliases
,enviroments
,settings
四种,其他的几种等学了后再总结
以下是一些常用的标签(更多标签见官方文档)
enviroments标签
enviroments是最先接触的标签,也是最重要的标签。其用途是配置数据连接时的一些信息。其下的子标签如下:
<environments default="">
<environment id="">
<transactionManager type=""></transactionManager>
<dataSource type=""></dataSource>
</environment>
</environments>
根据子标签的配置信息可以推测,一个environment便是一个数据库环境(通过id标识),default则表示默认采用哪个数据库环境。
- :便是选择何种事务管理,这里通常选择
JDBC
,此外查阅资料发现还有Managed
这种事务管理。两者有如下区别- 使用
JDBC
的事务管理机制:即利用java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())、关闭(close())等 - 使用
MANAGED
的事务管理机制:这种机制MyBatis自身不会去实现事务管理,而是让程序的容器如(JBOSS,Weblogic)来实现对事务的管理
- 使用
- :数据源的配置,其内置了三种数据源也就是
type="[UNPOOLED|POOLED|JNDI]"
- UNPOOLED– 不使用数据库连接池,这个数据源的实现会每次请求时打开和关闭连接
- POOLED– 使用数据库连接池,可以预料,其内部有配置连接池数量的接口。
- JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用(暂时用不上)
以目前的知识储备,我们仅使用一些基础的配置信息成功连接到数据库即即可
mapper标签
mapper标签也是出现在上一篇《如何快速构建Mybatis项目》提到的出现在了核心配置文件中的标签。该标签的作用是告诉Mybatis去哪里寻找sql语句。通常我们会讲写有sql语句的xml文件放在dao中,并且将其命名为接口名.xml
,例如UserMapper.xml
。其中会写着用于对应接口对应方法的sql语句。
在JDBC中,sql语句是写在DAO实现类中,诸如UserDaoImpl
中,在Service层时构建UserDaoImpl
并调用方法执行sql语句。
在Mybatis中,sql语句时写在上述UserMapper.xml
中,并在核心配置文件mybatis-config.xml
中的configuration
标签内注册,举例如下
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
在mybatis中,一个mapper就相当于JDBC中的一个DaoImpl实现类。封装了sql语句并能执行sql语句。
typeAliases标签
别名标签,用于省略冗余的全限定名,以及定义一些常量值,以供Mybatis使用
<typeAliases>
<!-- <typeAlias type="com.ggs.pojo.User" alias="User"/>-->
<package name="com.ggs.pojo"/>
</typeAliases>
例如,在使用了上述别名后,可以在UserMapper.xml中直接使用下述代码
<mapper namespace="com.ggs.dao.UserMapper">
<resultMap id="UserMap" type="User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserById" parameterType="int" resultMap="UserMap">
select * from Mybatis.user where id = #{id}
</select>
</mapper>
也就是第3行处,不在需要使用全限定名。此外,也可以在类的上面使用@Alias
注解。也可以达到相同的效果
@Alias("User")
public class User {
private int id;
private String name;
private String password;
//...
}
properties标签
这里直接使用官方文档的例子:
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如:
<properties resource="db.properties">
<property name="username" value="dev_user"/>
<property name="password" value="F2Fa3!33TYyg"/>
</properties>
设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如:
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。 driver 和 url 属性将会由 config.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。
简而言之:就是核心配置类mybatis-config.xml
中,同样可以注入外部配置的properties文件。并将读入的文件信息作为内置配置参数。
Setting标签
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>
小结
本文总结了Mybatis中最基础、最常用的一些标签以及属性。在后续的学习中,如果学习了新的标签属性,将会继续更新对应的内容。