MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,然后探究MyBatis的是如何实现查询的。
MyBatis执行流程
利用MyBatis实现一次查询
InputStream inputStream = Resources.getResourceAsStream("mybatisConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//创建SqlSessionFactory
SqlSessionFactory factory = builder.build(inputStream);
//从SqlSession工厂 SqlSessionFactory中创建一个SqlSession,进行数据库操作
SqlSession sqlSession = factory.openSession();
//使用SqlSession查询
Map<String,Object> params = new HashMap<String,Object>();
params.put("xxx",xxx);
//执行查询
List<Object> result = sqlSession.selectList("mapper.sqlId",params);
- SqlSession sqlSession = factory.openSession():开启一个sqlSession,它表示和数据库交互的会话,完成必要数据库增删改查功能。
- 执行sqlSession.selectList:返回查询结果List,Mybatis和数据库进行交互的流程都在此方法中。
那么探究MyBtis就由此进入吧!
selectList(String statement, Object parameter)方法源码:
public <E> List<E> selectList(String statement, Object parameter) {
return this.selectList(statement, parameter, RowBounds.DEFAULT);
}
public <E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds) {
try {
//根据Statement Id,在mybatis 配置对象Configuration中查找和配置文件相对应的MappedStatement
MappedStatement ms = configuration.getMappedStatement(stateme