全局配置文件中本人只记录了常用的几个
typeHandlers, objectFactory,objectWrapperFactory, reflectorFactory, plugins, databaseIdProvider
这几个只是作为了解,没做记录
mybatis-config.xml:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 7 <!-- 8 1:mybatis可以用properties引入外部properties文件内容 9 resource:引入的是项目的类路径,即项目中的文件 10 url:引入的是网络路径或者是磁盘路径 11 --> 12 <properties resource="dbconfig.properties"></properties> 13 14 <!-- 15 2:settings标签含有很多重要的设置项 16 setting用来设置每一个设置项 17 name:设置项名 18 value:设置项值 19 --> 20 <settings> 21 <setting name="mapUnderscoreToCamelCase" value="true"/> 22 </settings> 23 24 <!-- 25 3:typeAliases别名处理器,可以为我们的java类型起别名(别名不区分大小写,也就是即使你制定了别名无论大小写,只要字母对的上就可以) 26 1)typeAlias为指定java类型起别名, 27 type:被指定的java类型全类名,默认别名是类名的小写(employee,此时mapper文件中用到的全类名都能写成此别名) 28 alias:指定全新别名 29 2)package为某包下以及该子包下的所有类起别名(默认别名是类名的小写) 30 name:指定包的全路径 31 3)当批量起别名的时候,若子包中有类名与父包中类名相同时,会发生冲突报错, 32 这时可以在冲突的bean文件中添加@Alias标签来制定冲突类别名; 33 --> 34 <typeAliases> 35 <typeAlias type="com.yinfu.mybatis.beans.Employee"/> 36 <!-- <package name="com.yinfu.mybatis.beans"/> --> 37 </typeAliases> 38 39 <!-- 40 4:environments环境配置 mybatis可以配置多种环境 default指定使用某种环境,他的值对应的是环境的id 41 environment配置一个具体的环境信息,(必须包含俩标签),id代表当前环境的唯一标识 42 transactionManager:事务管理器 43 type:事务管理器的类型两种:JDBC(JdbcTransactionFactory事务管理器)|MANAGED(ManagedTransactionFactory事务管理器), 44 dataSource:数据源 45 type:数据源类型 46 --> 47 <environments default="development"> 48 <environment id="development"> 49 <transactionManager type="JDBC"/> 50 <dataSource type="POOLED"> 51 <property name="driver" value="${jdbc.driver}"/> 52 <property name="url" value="${jdbc.url}"/> 53 <property name="username" value="${jdbc.username}"/> 54 <property name="password" value="${jdbc.password}"/> 55 </dataSource> 56 </environment> 57 </environments> 58 59 <!-- 60 5:databaseIdProvider用来设置多数据库厂商(mysql,oracle,sqlServer等) 61 当配置环境中有其他数据库的链接配置,并且default来切换查询环境(用的那个数据库), 62 并且mapper文件中有对SQL语句指定查询环境的属性,这样mybatis可移植性大大增强 63 --> 64 <databaseIdProvider type="DB_VENDOR"> 65 <!-- 为不同数据库厂商指定别名 --> 66 <property name="MySQL" value="mysql"/> 67 <property name="Oracle" value="oracle"/> 68 </databaseIdProvider> 69 70 <!-- 寫好的的SQL映射文件(mapper文件)一定要注册到mybatis-config.xml中 --> 71 <!-- 72 6:mappers:将SQL映射(mapper文件或mapper接口)注册到全局映射中(mybatis-config.xml) 73 [1]mapper:注册指定的sql映射 74 1)配置文件(mapper.xml文件)注册 75 resource:引入的是项目的类路径,即项目中的文件 76 url:引入的是网络路径或者是磁盘路径 77 2)接口注册 78 class:接口名全路径 79 ①有SQL映射文件(mapper.xml),映射文件名要与接口名同名,并且俩文件要在同一目录下; 80 ②没有SQL映射文件,利用注解将SQL语句写在接口中对应的方法上(@Select @Delete等) 81 推荐:比较重要的Dao接口用SQL映射文件的方式,不太重要的可以用注解的方式,但是注解修改了源代码; 82 [2]package:批量注册 83 name:包的全路径名称; 84 有SQL映射文件(mapper.xml),映射文件名要与接口名同名,并且俩文件一定要在同一包下 85 86 --> 87 <mappers> 88 <mapper resource="com/yinfu/mybatis/dao/EmployeeMapper.xml"/> 89 </mappers> 90 </configuration>
对应的mapper映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 接口式编程,namespace对应的是接口的全类名 --> <mapper namespace="com.yinfu.mybatis.dao.EmployeeMapper"> <!-- 接口式编程,id对应的是接口中的方法名 databaseId是在mybatis-config.xml中databaseIdProvider标签中定义的 即:这条SQL语句是运行在哪个数据库环境下的(mysql,oracle,sql severd等) 此时程序是运行在mysql环境下的,指定了mysql数据库名的和没指定名称的都会执行,如果mapper文件 存在两个相同id方法名的 两条SQL语句,mybatis会自动舍弃没指定数据库名的那条; --> <select id="getObjById" resultType="employee" databaseId="mysql(数据库类型的别名)"> select * from tbl_employee where id = #{id} </select> </mapper>
对应的mapper接口:
1 package com.yinfu.mybatis.dao; 2 3 import com.yinfu.mybatis.beans.Employee; 4 5 public interface EmployeeMapper { 6 7 /** 8 * 9 * 还有一种注解式mapper,没有对应的mapper.xml文件,而是将SQL语句写在了注解里 10 * 例: 11 * @Select("select * from tbl_employee where id = #{id}") 12 * public Employee getObjById(Integer id); 13 * 14 * @param id 15 * @return 16 */ 17 18 public Employee getObjById(Integer id); 19 }