1. mybatis框架简述
工作一年多了,项目中一直是在使用mybatis框架作为orm框架,但始终感觉有点不是特别熟悉的味道,所以重新回顾一下,并写下这篇博文记录下,如果有什么不对地方,欢迎指正。
在我们开始接触数据库的时候可能做过从获取数据库connection , 编写sql ,向数据库发出sql语句,获取结果集,关闭数据库连接 等繁琐的过程。后来我们使用了apache下的一个工具类来JDBCUtil简化这一过程,但是它并没有像框架考虑的那么全面,所以有很多功能实现不了还是要我们程序员去解决这个问题。所以再后来我们可能学习了Hibernate这个强大的orm框架,这个框架使得我们编码只要告诉hibernate那个javaBean对应数据库中的那个table,其中间的一系列过程都被封装起来了,虽然这开始对于我们程序员来说是好事,但是系统到后面可能需要经过sql优化来提高系统的运行速度,但是这个sql编写与发送sql都是hibernate给我们封装好的,我们根本没法定制。但是hibernate 考虑到这个,给我们提供了一个hql 的功能模块来实现sql定制功能。这时问题就来了,这大大的增加了我们的学习任务。
为了解决这个弊端,mybatis应运而生,他把sql语句这一块单独提出来形成了一个xml配置文件而其他的过程就封装起来。mybatis 既简化了繁琐的过程,又将最精华的部分单独提出来给我们自己来实现,我们就只要提高自己的sql编写能力就可以,而没有太大的学习负担,同时又便于系统后期维护,综上所述mybatis是一个非常优秀的orm框架。
1.1mybatis的配置文件的作用
<?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 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
1.2配置文件的几个关键标签
1.2.1 引入外部配置文件内容 < properties >
<!--1.properties 标签用来加外部properties配置文件 resource用来加载类路径下的, url用来加载网络或者磁盘下的-->
<properties resource="db.properties"/>
1.2.2 mybatis的设置 < settings>
<!--2. settings 是设置mybatis的-->
<settings>
<!--配置缓存的全局开关 如果要使用缓存 就必须设置-->
<setting name="cacheEnabled" value="true"/>
<!--延迟加载的全局开关,如果为true 所有关联对象都会延迟加载。但是可以通过fetchType属性来设置特例-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--是否允许单一语句返回多结果集(需要兼容驱动)。-->
<setting name="multipleResultSetsEnabled" value="true"/>
<!--使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。 -->
<setting name="useColumnLabel" value="true"/>
<!--允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,
尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。-->
<setting name="useGeneratedKeys" value="false"/>
<!--指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;
PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。-->
<setting name="autoMappingBehavior" value=