第1步:SqlSessionFactoryBuilder接收SqlMapConfig.xml文件流,构建出SqlSessionFactory对象;
第2步:SqlSessionFactory读取SqlMapConfig.xml中连接数据库和mapper映射信息,用来生产出真正操作数据库的SqlSession对象;
第3步:SqlSession对象有2个作用
- 作用1,生成接口代理对象
- 作用2,定义通用增删改查方法
- 无论第4步走哪个分支,除了连接数据库信息,还需要得到sql语句
第4步:使用mybatis框架 VS 自己写实现类
- mybatis框架,在SqlSessionImpl对象的getMapper方法中分2步来实现
- 先用SqlSessionFactory读取的数据库连接信息,创建Connection对象;
- 通过jdk代理模式,创建出代理对象作为getMapper方法返回值,这里主要工作是,在创建代理对象时,第3个参数处理类里面得到sql语句,执行对应的CRUD操作;
- 自己写实现类,在SqlSessionImpl对象中提供selectList()方法,实际mybatis框架中还有selectOne,insert等方法,这些方法内也分2步
- 用SqlSessionFactory读取的数据库连接信息,创建出jdbc的Connection对象;
- 直接得到sql语句,使用jdbc的Connection对象进行对应的CRUD操作;
第5步:封装结果集,无论使用mybatis框架生成代理对象,还是自己写实现类通用的CRUD方法,都要对返回的数据库结果集进行封装,变成java对象,返回给调用者;必须要知道调用者所需要的返回类型。
总结:使用mybatis框架,可以简化开发,推荐使用。