核心配置文件
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
environments环境配置
mybatis可以配置成适应多种环境,sqlSeesionFactory实例只能选择一种环境,mybatis默认的事务管理器时JDBC,连接池时POOLED
properties属性
通过properties属性来实现引用配置文件,这些属性可外部配置且动态替换的,既可以在java文件中配置,也可以通过properties元素的子元素来传递
把url,driver,username,possword都放在db.properties中,然后把properties引入到xml中也可以在xml中通过property子元素通过键值对方式配置一些属性
typeAliases类型别名
为Java类型设置一个短的名字,减少类完全限定名的冗余 也可以指定一个包名,mybatis会在包名下搜索需要的Javabean,扫描实体类的包,它的默认别名就是这个类的类名(小写) 当指定一个类时,可以diy取名,但是指定包时,别名一律默认,如果必须要自己diy,那么在这个类上加注解@Alias("x") ## mappers映射器 resource配置时可以不在同一个包下 class和package必须在同一个包下 ## 生命周期和作用域 开始——>SqlSessionFactoryBuilder——>SqlSessionFactory——>SqlSession——>结束或者sqlmapper——>结束SqlSessionFactoryBuilder:一旦创建了SqlSessionFactory就不需要了,局部变量
SqlSessionFactory:类似于数据库连接池,一旦被创建就一直存在。全局变量。
SqlSession:数据库连接池的一个请求,需要关闭,线程不是安全的,不能被共享。
ResultMap结果集映射
问题:字段与属性不匹配
当类的属性和数据库中的字段不一样时,执行的sql语句不一样的字段查询结果就是null,eg:属性:id、name、password;字段:id、name、pwd,执行查询语句时,结果中pwd为null
解决1:给字段起别名
select id,name,pwd password from user
这个需要改动sql语句
解决2:resultMap结果集
在mapper.xml中定义
<resultMap id="userMap" type="user">
//column-字段 property-属性
<result column="pwd" property="password"/>
<result column="id" property="id"/>
<result column="name" property="name"/>
</resultMap>