MyBatis HelloWorld
1 HelloWorld简单版
- 创建一张测试表
- 创建对应的javaBean
- 创建mybatis配置文件,sql映射文件
- 测试
MyBatis操作数据库
1、创建MyBatis全局配置文件
- MyBatis 的全局配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息、如数据库连接池信息等。指导着MyBatis进行工作。我们可以参照官方文件的配置示例。
2、创建SQL映射文件
- 映射文件的作用就相当于是定义Dao接口的实现类如何工作。这也是我们使用MyBatis时编写的最多的文件。
测试
- 根据全局配置文件,利用SqlSessionFactoryBuilder创建SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
- 使用SqlSessionFactory获取sqlSession对象。一个SqlSession对象代表和数据库的一次会话
SqlSession openSession = factory.opSession();
- 使用SqlSession根据方法id进行操作
SqlSession openSession = factory.openSession();
try {
Object one = openSession.selectOne("com.atguigu.mybatis.dao.EmployeeMapper.getEmpById", 1);
System.out.println(one);
} finally {
openSession.close();
}
2 HelloWorld-接口式编程
- 创建一个Dao接口
- 修改Mapper文件
- 测试
使用SqlSession获取映射器进行操作
SqlSession openSession = factory.openSession();
try {
// 3.获取接口的实现类对象
// 会为接口自动创建一个代理对象,代理对象去执行增删改查方法
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Employee empById = mapper.getEmpById(1);
System.out.println(empById);
} finally {
openSession.close();
}
SqlSession
- SqlSession 的实例不是线程安全的,因此是不能被共享的。
- SqlSession每次使用完成后需要正确关闭,这个关闭操作是必须的
- SqlSession可以直接调用方法的id进行数据库操作,但是我们一般还是推荐使用SqlSession获取到Dao接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作
总结
- 接口式编程
原生: Dao ====> DaoImpl
mybatis: Mapper ====> xxMapper.xml - SqlSession代表和数据库的一次会话;用完必须关闭;
- SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。
- mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。
(将接口和xml进行绑定)EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class); - 两个重要的配置文件:
mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等…系统运行环境信息
sql映射文件:保存了每一个sql语句的映射信息: 将sql抽取出来。