(工程mybatis03
)
一、Mybatis的全局配置文件,配置内容如下:
-
properties
(属性) -
settings
(全局配置参数) -
typeAliases
(类型别名) -
typeHandlers
(类型处理器) -
objectFactory
(对象工厂) -
plugins
(插件) -
environments
(环境集合属性对象) -
environment
(环境子属性对象,environments
的自标签) -
transactionManager
(事务管理,environment
的自标签) -
dataSource
(数据源,environment
的自标签) -
mappers
(映射器)
二、properties(属性)
- 需求:将数据库的连接参数单独配置在
db.properties
中,只需要在SqlMapperConfig.xml
中加载该db.properties
的属性值。这样就不需要在硬编码了。原因是方便对参数进行统一管理,其他的xml
可以引用该配置文件。 - 建议:不要在
properties
标签体内添加任何属性值,只将属性值定义在db.properties
中,在db.properties
中定义属性名要有一定的特殊性。比如jdbc.username
。
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3305/mybatis
jdbc.username=root
jdbc.password=walp1314
在SqlMapConfig.xml
文件中配置此文件
<!-- 加载属性文件 -->
<properties resource="db.properties">
<!-- 在这里还可以配置一些属性名和值,这里的值是首先被读取的,然后再读取文件中的属性,同名的会覆盖
最后才读取parameterType传递的属性,也会覆盖掉同名的,这里要注意!!! -->
</properties>
于是数据库的相关配置就可以这样写:
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
三、setttings全局参数配置
Mybatis框架在运行时可以调整一些运行参数,比如开启二级缓存、延迟加载。参考mybatis-settings.xlsx
文件。在<properties>
标签后面配置。
四、typeAliases别名(重点)
需求:在mapper.xml
中定义了很多Statement
,Statement
需要parameterType
指定输入参数的类型、需要resultType
指定输出结果的映射类型。
如果在指定类型时输入类型的全路径,不方便开发,可以定义一些针对上面两个参数定义一些别名,比如```parameterType="java.lang.Integer"``,对于这些类型mybatis都为我们定义好了。
而针对pojo类型的别名需要我们自己定义
<!-- typeAliases-->
<typeAliases>
<!-- 针对单个别名定义 -->
<typeAlias type="cn.itcast.pojo.User" alias="User"/>
</typeAliases>
说明:之后我们在使用pojo的时候就可以直接写其别名。如
<select id="findUserByName" parameterType="java.lang.String" resultType="User">
但是这是单条记录的情况,对于多条记录的情况为(推荐使用):
<!-- typeAliases-->
<typeAliases>
<package name="cn.itcast.pojo"/>
</typeAliases>
说明:批量别名定义 ,需要指定一个包名,mybatis自动扫描pojo类,自动定义别名,别名就是类名(首字母大小或小写都行)。
五、typeHandlers(类型处理器)
在mybatis中通过typeHandlers
完成jdbc
类型和java
类型的转换。一般不需要自定义,mybatis都帮我们做好了。
六、mappers映射器
单个映射
<mappers>
<mapper resource="mapper/UserMapper.xml" />
</mappers>
还可以使用这种方式:
<mapper url="http://..."/>
当然还可以通过接口来进行映射,通过mapper
接口来加载,要指定的不是映射文件了,而是指定的是class
,需要遵循一定的规范:需要将mapper
接口的类型和mapper.xml
名称保持一致,且在一个目录,前提是使用的是mapper
代理的方法。
<mapper class="cn.itcast.mapper.UserMapper"/>
但是这是针对映射文件很少的方式,如果映射文件很多则比较麻烦,下面看批量映射(推荐使用):
<package name="cn.itcast.mapper"/>