问题描述:本文主要说明mybatis核心配置文件中的各参数及其注意事项
工程目录如下:
以下配置文件基于以上工程目录书写:
<?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>
<!--引入自己配置的properties文件,此时就可以${属性名}的方式访问属性值-->
<properties resource="jdbc.properties"></properties>
<!--设置全局配置信息-->
<settings>
<!--数据库表中字段与类属性的转换设置,将数据库表中字段的下划线自动转换为驼峰-->
<!--如:表emp中某一字段为emp_name,转换后会变为empName-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
<!--为类设置别名-->
<typeAliases>
<!--
typeAlias:设置某个具体的类型的别名
属性:
type:需要设置别名的类型的全类名
alias:设置此类型的别名,若不设置此属性,该类型拥有默认的别名,即类名且不区分
大小写;若设置此属性,此时该类型的别名只能使用alias所设置的值
-->
<!--<typeAlias type="com.swu.mybatis.pojo.User"></typeAlias>-->
<!--<typeAlias type="com.atguigu.mybatis.bean.User" alias="abc">
<!--以包为单位,设置改包下所有的类型都拥有默认的别名,即类名且不区分大小写-->
<package name="com.swu.mybatis.pojo"/>
</typeAliases>
<!--
environments:设置多个连接数据库的环境
属性:
default:设置默认使用的环境的id
-->
<environments default="development">
<!--
environment:设置具体的连接数据库的环境信息
属性:
id:设置环境的唯一标识,可通过environments标签中的default设置某一个环境的
id,表示默认使用的环境
-->
<environment id="development">
<!--
transactionManager:设置事务管理方式
属性:
type:设置事务管理方式,type="JDBC|MANAGED"
type="JDBC":设置当前环境的事务管理都必须手动处理
type="MANAGED":设置事务被管理,例如spring中的AOP
-->
<transactionManager type="JDBC"/>
<!--
dataSource:设置数据源
属性:
type:设置数据源的类型,type="POOLED|UNPOOLED|JNDI"
type="POOLED":使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从
缓存中直接获取,不需要重新创建
type="UNPOOLED":不使用数据库连接池,即每次使用连接都需要重新创建
type="JNDI":调用上下文中的数据源
-->
<dataSource type="POOLED">
<!--设置驱动类的全类名-->
<!--如果引入了jdbc的properties配置文件,value就能使用${属性名}方式获取-->
<!--<property name="driver" value="${jdbc.driver}"/>-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--设置连接数据库的连接地址,此处注意修改为自己的表名-->
<!--<property name="url" value="${jdbc.url}"/>-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<!--设置连接数据库的用户名,注意修改为自己的用户名-->
<!--<property name="username" value="${jdbc.username}"/>-->
<property name="username" value="root"/>
<!--设置连接数据库的密码,注意修改为自己的数据库密码-->
<!--<property name="password" value="${jdbc.password}"/>-->
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<!--以单个文件的形式引入相应的配置文件,resource的值为配置文件的路径-->
<!--<mapper resource="com/swu/mybatis/mapper/EmpMapper.xml"></mapper>-->
<!--
以包的形式引入包下的所有配置文件,此方式必须保证mapper接口和mapper映射文件必须
在相同的包下
-->
<package name="com.swu.mybatis.mapper"/>
</mappers>
</configuration>
1、全类名为何物?
我们可以看到类Emp位于com/swu/mybatis/pojo包下,所以类Emp的全类名为:com.swu.mybatis.pojo.Emp,即全类名=包名.类名
2、引入映射文件, 何为mapper接口和mapper映射文件必须在相同的包下?
例如:我们在项目的src/main/java目录下创建了一个EmpMapper接口,它的全类名为:com.swu.myvatis.mapper.EmpMapper,如果我们用包的形式导入EmpMapper的映射文件,那么我们就必须在项目的src/main/resources目录下创建一个全类名为:com.swu.myvatis.mapper的包,然后再在这个包里创建EmpMapper.xml映射文件。如下图所示:
3、如果我们以文件资源的形式引入相应的配置文件,resource的值为配置文件的路径,此时我们要注意不能用“.”来表示目录层级关系,要使用“/”来表示
如上图所示,如果我们使用文件资源的形式引入EmpMapper的配置文件EmpMapper.xml,那么我们必须使用以下这种形式:
<mapper resource="com/swu/mybatis/mapper/EmpMapper.xml"></mapper>