1.映射器是什么?
它包含一个xml配置文件和一个对应的Mapper接口
xml可以提供动态SQL,配置Sql参数类型,返回值类型,缓存,刷新,提供映射规则等
Mapper是对xml文件的映射,实际上配置好xml文件后就不再操作xml文件,直接操作Mapper接口操作数据库即可。
2.POJO对象
数据库语句所需要的参数或者数据库语句执行的结果都会映射到一个实体类上去,这是典型的ORM的思想,将对数据库的操作属性值转换成一个POJO类,极大的简化了数据持久化的操作难度。
例如:
public class Role
{
private Long id;
private String roleName;
private String note;
}
3.一个Mapper中的方法就代表一条数据库操作
Mapper接口的一个方法就是一条数据库操作,它的函数参数就是Sql语句的输入参数,它的返回值就是Sql语句执行结果 向POJO类的映射的结果。
例如:下图中,输入参数是一个Long类型的id,查询结果就是一个Role对象。Mybatis可以实现自动映射,前提要配置好xml文件
将Mapper.xml添加到mybatis-config.xml文件中:
或者
4.Mapper.xml文件的配置
一个由Select包含的节点对应着一条SQL语句,也就是一个SQL操作。
id = "getRole"就对应着上述的RoleMapper接口的一个方法名,这就表示,Mapper接口的那个方法就和当前的select语句绑定了,操作那个接口函数就是操作这条数据库语句。
parameterType指定的是输入的参数类型。这里根据接口函数的定义,输入参数是一个Long类型的id,所以此处是long类型
resultType指定的是输入的参数类型,根据接口函数的定义,输出参数是一个Role类型,所以此处应该是Role的全限定名。
但是,还记得吗?在mybatis-config.xml函数中,有这么一处代码:
<typeAliases>
<typeAlias alias="role" type="com.learn.ssm.chapter3.pojo.Role" />
</typeAliases>
这里有了一个类别名的定义,所以此处使用的是别名--role
5.通过Mapper接口操作数据库
RoleMapper mapper = sqlSession.getMapper(RoleMapper.class); //通过sqlSession获取对应的Mapper
Role role = mapper.getRole(1L); //此处操作的是RoleMapper接口函数
6.各组件的生命周期
SqlSessionFactoryBuilder就是为了从配置文件中读取配置并生成SqlSessionFactory,所以生成SqlSessionFactory后,立即销毁即可。
SqlSessionFactory是一个数据库连接池,保存在项目中,通过单例模式在应用中共享即可。
SqlSession就是一条数据库连接,执行完语句后,直接关闭连接即可。
Mapper是一个SqlSession中执行的接口,基本上跟随SqlSession或者早于SqlSession释放即可。