Mybatis 应用
1 Mybatis 入门与编码流程
2 mapper代理开发方式
3 全局配置文件
4 输入映射和输出映射
5 关联查询
6 延迟加载
7 动态SQL
8 Mybatis缓存
Mybatis 全局配置文件
一、 配置内容
SqlMapConfig.xml中配置的内容和顺序如下: 顺序是固定的
- properties(属性)
- settings(全局配置参数)
- typeAliases(类型别名)
- typeHandlers(类型处理器)–Java类型–JDBC类型—>数据库类型转换
- objectFactory(对象工厂)
- plugins(插件)–可以在Mybatis执行SQL语句的流程中,横叉一脚去实现一些功能增强,比如 PageHelper分页插件,就是第三方实现的一个插件 environments(环境集合属性对象)
- environment(环境子属性对象)
- transactionManager(事务管理)
- dataSource(数据源)
- mappers(映射器)
二、 properties标签
SqlMapConfig.xml可以引用java属性文件中的配置信息。
1、在classpath下定义db.properties文件,
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://192.168.56.100:3306/ssm?characterEncoding=utf-8
db.username=root
db.password=root
2、在SqlMapConfig.xml文件中,引用db.properties中的属性,具体如下:
<properties resource="phase01/db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments>
3、properties标签除了可以使用resource属性,引用properties文件中的属性。还可以在properties标签
内定义property子标签来定义属性和属性值,具体如下:
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
</properties>
注意: MyBatis 将按照下面的顺序来加载属性:(配置文件加载:后加载的覆盖前加载)
- 读取properties 元素体内定义的属性。
- 读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
Mybatis 可以读取系统环境变量,增加前缀放置获取错误。db.username
三、 typeAlias标签
别名的作用:就是为了简化映射文件中parameterType和ResultType中的POJO类型名称编写。
3.1 默认支持别名
示例:
int -> Integer
3.2 自定义别名
在SqlMapConfig.xml中进行如下配置:
<typeAliases>
<!-- 单个别名定义 -->
<typeAlias alias="user" type="com.kkb.mybatis.po.User"/>
<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
<package name="com.kkb.mybatis.po"/>
</typeAliases>
四、 mappers标签
- 使用相对于类路径的资源, 写的是xml 文件。
<mapper resource=""/>`
<mapper resource="sqlmap/User.xml" />
- 使用绝对路径加载资源(很少用)
<mapper url="">
<mapper url="file://d:/sqlmap/User.xml" />
- 使用mapper接口类路径,加载映射文件。(很少用)
<mapper class=""/>
<mapper class="com.kkb.mybatis.mapper.UserMapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
- 注册指定包下的所有mapper接口,来加载映射文件。
写的是包名。
<package name=""/>
<package name="com/mybatis/mapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
4.1 mapper 标签 遇到的问题
1、 当Mapper 接口文件与Mapper XML文件放置在一起时, Idea 编译后文件缺少xml, 上述归结与maven编译过程中会忽略非resources目录下的非java文件。
<build>
<!--将mapper文件打包进去-->
<resources>
<resource>
<!--指定根目录 到源文件夹 一般如下-->
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>