MyBatis是一个基于Java的持久层框架,它提供了一组核心API用于执行SQL操作、构建数据库连接、管理事务等。以下是MyBatis的核心API介绍:
SqlSessionFactory:
SqlSessionFactory是MyBatis的核心接口之一,用于创建SqlSession对象。
它是MyBatis应用程序与数据库之间的一个重要的工厂类,负责创建数据库连接并管理配置信息。
通常,SqlSessionFactory是通过MyBatis的配置文件(mybatis-config.xml)构建的。
SqlSession:
SqlSession是MyBatis与数据库交互的主要接口,用于执行SQL语句、管理事务等数据库操作。
它提供了各种查询、插入、更新、删除等方法,通过这些方法可以执行SQL语句并返回结果。
SqlSession是线程不安全的,通常情况下,每个请求或线程应该有自己的SqlSession实例。
Mapper接口:
Mapper接口是MyBatis的另一个核心概念,它用于定义SQL映射方法,实现了数据库操作的解耦。
通过定义一个Java接口,然后使用@Select、@Insert、@Update、@Delete等注解或者XML映射文件来描述SQL语句。
MyBatis会根据Mapper接口的方法名和参数,动态生成对应的SQL语句并执行。
Configuration:
Configuration是MyBatis的全局配置类,包含了MyBatis的所有配置信息。
它包含了数据库连接信息、缓存配置、插件配置、TypeHandler注册、映射器(Mapper)注册等核心配置。
Configuration可以通过SqlSessionFactoryBuilder从XML配置文件中加载,并最终构建一个SqlSessionFactory。
MapperRegistry:
MapperRegistry是MyBatis用于管理Mapper接口的注册类,它将Mapper接口与MapperProxyFactory(Mapper代理工厂)关联起来,实现Mapper接口的动态代理。
Executor:
Executor是MyBatis执行器接口,负责执行SQL语句并处理数据库操作。
MyBatis中有三种执行器类型:SimpleExecutor、ReuseExecutor和BatchExecutor,分别对应不同的SQL执行策略。
TypeHandler:
TypeHandler是MyBatis用于处理Java对象与数据库之间的类型转换的接口。
MyBatis提供了许多默认的TypeHandler用于处理常见的数据类型,也可以自定义TypeHandler来处理特殊的数据类型。
以上是MyBatis的一些核心API,它们共同组成了MyBatis框架的基础,用于实现Java应用程序与数据库之间的数据交互。使用这些API,您可以更加灵活和高效地进行数据库操作。可以看得出来,很多类的命名跟配置文件里的标签是匹配的。
SqlSessionFactory和SqlSession是MyBatis中两个重要的核心接口,用于构建数据库连接和执行SQL操作。它们在MyBatis中扮演着重要的角色,下面对它们进行重点介绍和使用方法:
SqlSessionFactory:
SqlSessionFactory是MyBatis的工厂类,用于创建SqlSession对象。
它负责管理MyBatis的配置信息,包括数据库连接信息、插件配置、映射器(Mapper)注册等。
SqlSessionFactory的实例通常是全局唯一的,应该在应用程序启动时构建,并在整个应用程序的生命周期内重用。
使用方法:
创建SqlSessionFactory:通常,SqlSessionFactory是通过SqlSessionFactoryBuilder从MyBatis的配置文件中加载的。例如:
Stringresource="mybatis-config.xml"; InputStreaminputStream=Resources.getResourceAsStream(resource); SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);
SqlSession:
SqlSession是MyBatis与数据库交互的主要接口,用于执行SQL语句、管理事务等数据库操作。
它提供了各种查询、插入、更新、删除等方法,通过这些方法可以执行SQL语句并返回结果。
SqlSession是线程不安全的,通常情况下,每个请求或线程应该有自己的SqlSession实例。
使用方法:
获取SqlSession:通常通过SqlSessionFactory的openSession()方法获取SqlSession实例,如下所示:
SqlSessionsqlSession=sqlSessionFactory.openSession();
执行SQL操作:通过SqlSession的方法执行SQL操作。例如,使用Mapper接口的方式执行SQL操作:
UserMapperuserMapper=sqlSession.getMapper(UserMapper.class); Useruser=userMapper.getUserById(1);
提交事务:如果需要使用事务,可以通过SqlSession的commit()方法提交事务。
关闭SqlSession:执行完数据库操作后,需要关闭SqlSession,释放资源。通常使用close()方法来关闭SqlSession:
sqlSession.close();
请注意,在使用SqlSession时,应该确保正确地管理数据库连接和事务,尤其是在多线程或者并发场景下,确保每个请求或线程有独立的SqlSession实例,并正确地开启、提交或回滚事务。
总结:SqlSessionFactory用于创建全局唯一的SqlSession实例,而SqlSession则是与数据库交互的主要接口,负责执行SQL语句和管理事务。使用这两个接口,可以高效地进行数据库操作,实现Java应用程序与数据库之间的数据交互。一般这一块都是统一封装,不需要直接去考虑的。只需要配制好一些数据库和配置文件的信息,直接使用封装的代码去实现curd即可。