1.MyBatis是通过xml或注解的方式将需要执行的statement对象配置起来,通过java对象和statement对象中的sql进行映射,生成最终的sql语句,然后由MyBatis框架执行sql并将结果映射成java对象并返回。
2.MyBatis的配置文件包含了影响MyBatis行为的信息,文档的结构如下:
(1)properties 属性
可以在CLASSPATH中增加一个db.properties属性文件,用于配置连接数据的各个属性:
在配置文件中配置<properties/>属性,用于加载属性文件:mysql_driver=com.mysql.jdbc.Driver mysql_url=jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=utf8 mysql_username=root mysql_password=root
在属性文件中的属性就可以拿到配置文件中去替换需要动态配置的属性值:<!-- 加载属性文件 --> <properties resource="db.properties"/>
这样的配置方式可以使得配置变得更为灵活,需要修改属性值就直接到属性文件中去修改就可。<!-- dataSource值数据源配置,POOLED是JDBC连接对象的数据源连接池的实现 --> <dataSource type="POOLED"> <property name="driver" value="${mysql_driver}" /> <property name="url" value="${mysql_url}" /> <property name="username" value="${mysql_username}" /> <property name="password" value="${mysql_password}" /> </dataSource>
(2)settings 设置
主要用于配置改变MyBatis运行时行为的属性,比如配置日志
<settings> <setting name="logImpl" value="LOG4J"/> </settings>
(3)typeAliases 类型命名
主要用于给类取别名,可以减少类完全限定名的冗余。
格式如下:
<typeAliases> <!-- 定义单个别名 <typeAlias type="com.domain.User" alias="user"/> --> <!-- 批量的别名定义,扫描整个包下面的所有类,别名为类名(首字母大小写都可以) --> <package name="com.po"/> <package name="其他包"/> </typeAliases>
(4)typeHandlers 类型处理器
无论是MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类处理器将获取到的值以合适的方式转换成Java类型。
(5)objectFactory 对象工厂
MyBatis每次创建结果对象的新实例时,它都会使用一个对象工厂(objectFactory)实例来完成。
(6)plugins 插件
(7)environments 环境
<environments default="development"> <environment id="development"> <!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 --> <transactionManager type="JDBC" /> <!-- dataSource数据源配置,POOLED是JDBC连接对象的数据源连接池的实现 --> <dataSource type="POOLED"> <property name="driver" value="${mysql_driver}" /> <property name="url" value="${mysql_url}" /> <property name="username" value="${mysql_username}" /> <property name="password" value="${mysql_password}" /> </dataSource> </environment> </environments>
environment 环境变量
每个environment元素定义的环境ID,可以任意命名<environment id="development">
transactionManager 事务管理器
JDBC:直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。<transactionManager type="JDBC" />
MANAGED:它几乎不做什么。它从来不提交或者回滚一个连接,而是让容器来管理事务的整个生命周期。默认情况下它会关闭连接,可以将closeConnection属性设置为false来阻止它默认的关闭行为。
dataSource 数据源
(8)databaseIdProvider 数据库厂商标识
(9)mappers 映射器
有如下几种映射文件的方式:
注:使用接口类和使用包名时,UserMapper.xml与 UserMapper.java(接口)必须在同一目录下并且必须同名。<!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 --> <mappers> <!-- 使用类路径查找资源文件 --> <mapper resource="com/mapper/UserMapper.xml" /> </mappers> <mappers> <!-- 使用本地文件 --> <mapper url="file:///F:/mapper/UserMapper.xml" /> </mappers> <mappers> <!-- 使用接口类 --> <mapper class="com.mapper.UserMapper" /> </mappers> <mappers> <!-- 使用包名 --> <package name="com.mapper"/> </mappers>