SqlSession代表和数据库的一次回话,用完之后必须关闭
SqlSession和java.sql.connection一样都是非线程安全的,每次使用必须要获取新的对象
mapper的接口没有实现类,但是mybatis会为这个接口生成一个代理类(动态代理)
properties
mybatis可以使用properties文件来引入外部properties的内容
resource : 引入类路径下的配置文件
url:引入磁盘下的配置文件
<properties resource|url="" ></properties>
使用${配置文件的key}
但一般和spring整合之后都是在spring中配置的
typeAliases
typeAliases: 为某个java类型取别名
type:要起别名的全类名
alias:设置类的别人,默认是类的名称首字母小写
<typeAliases>
<typeAliase type="" alias="">
</typeAliases>
批量起别名
name:包名,会为当前包以及子包起一个默认别名
注意:如子包中有类名重复,mybatis会报错,可以用@Alias注解设置别名
<typeAliases>
<package name="" />
</typeAliases>
settings
name:设置项的名称
value:设置项的取值
<settings>
<setting name="" value=""/>
</settings>
databaseIdProvider
databaseIdProvider:支持多数据厂商
DB_VENDOR:见Configuration.class
作用:获取数据库厂商的标识(java.sql.Connection.getMetaData().getDatabaseProductName()),mybatis会根据标识执行不同的sql
<databaseIdProvider type="DB_VENDOR">
<!--为不同的数据库厂商其别名,MySQL叫mysql -->
<properties name="MySQL" value="mysql"/>
<properties name="Oracle" value="oracle"/>
...
</databaseIdProvider>
<select id="" returnType=""
databaseId="databaseIdProvider中的properties value值">
sql语句会根据databaseId执行不同数据库的语句
</select>
environments
environments配置多个environment
default:设置当前启用的环境,即某一个environment的id
environment配置一个具体的环境信息
id:标签当前环境的id,多个environment必须id不一样
必须要有transactionManager 和 datasource标签
transactionManager:
type:配置事务管理的类型
JDBC:JdbcTranscationFactory.class,使用JDBC进行事务控制
MANAGER:ManagedTranscationFactory.class,使用使用容器的生命周期去管理事务
自定义事务管理器:实现TranscationFactory接口即可,type就是实现类的全类名
datasource:
type: 数据源类型
JNDI:JNDI
UNPOOLED:不适用连接池
POOLED:使用连接池
自定义:实现DataSourceFactory接口
transactionManager和datasource的type类型,可以参考mybatis的核心Configuration.class
mybatis初始化的时候,会在成员变量configuration中注册相对应的Class,如JDNI就是注册JndiDataSourceFactory.class
<environments defalut="">
<environment id="">
<transactionManager type=""></transactionManager>
<datasource></datasource>
</environment>
</environments
mapper
<mapper resource="使用类路径下面的mapper文件" />
<mapper url="网络路径或者磁盘文件下的mapper文件" />
<mapper class="接口的全类名,mapper文件名和接口文件名必须一致,切都在同一目录下"/>
当然也可以不用写mapper文件
可以使用@Select @Update @Delete等等注解去实现
<mapper packeage="包名">
建议简单的SQL查询可以使用注解。加快开发速度
复杂的或者重要的SQL可以使用配置文件