1、Mybatis架构体系(面试可能会问):
- 和其他框架一样,Mybatis也需要也配置文件SqlMapConfig.xml核心配置,里面对应每一个表会有很多的mappers配置
- 用SqlSessionFactoryBuilder类的build方法建立一个SqlSessionFactory接口的实例(这里会调用Mybatis的工具类将核心配置文件作为输入流输入)
- 开启一个SqlSession会话
- SqlSession是一个接口实例,底层真正调用的是excutor,会创建Mybatis自己的MappedStatement对数据库进行增删改查操作(就相当于JDBC里面的statement/prestatement,然后调用excuteQuery方法一样
- 输入映射是Map、String/Integer等基本类型、pojo
- 输出映射是Map、String/Integer等基本类型、pojo、List
具体代码的体现如下(包不要导错!)
package cn.nupt.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.nupt.pojo.User;
public class MybatisCore {
public void mybatis() throws IOException {
SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
//SqlMapConfig.xml核心配置,里面对应每一个表会有很多的<mappers>配置
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//用SqlSessionFactoryBuilder类的build方法建立一个SqlSessionFactory接口的实例
SqlSessionFactory sqlSessionFactory = factoryBuilder.build(inputStream);
//开启一个会话
SqlSession session = sqlSessionFactory.openSession(true);
//然后这个会话回调用excute方法调用Mybatis自己的MappedStatement对数据库进行操作(就相当于JDBC里面的statement/prestatement,调用excuteQuery方法一样)
List<User> list = session.selectList("user.getUserByName", "张");
//输入映射是Map、String/Integer等基本类型、pojo
//输出映射是Map、String/Integer等基本类型、pojo、List等类型
}
}