Mybatis的执行流程
MyBatis是一个开源的持久层框架,它简化了数据库操作的编写和管理。下面是MyBatis的执行流程概述:
1. 配置:首先,你需要配置MyBatis的相关配置文件,如 `mybatis-config.xml` 和映射文件(Mapper XML)。配置文件包含了数据库连接信息、插件配置、类型别名等。
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="jdbc.properties"/> <!--将下划线映射为驼峰--> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--开启延时加载 有分布的话 执行一步 一个属性可以--> <setting name="lazyLoadingEnabled" value="true"/> <!--按需加载 false生效 全局配置 --> <setting name="aggressiveLazyLoading" value="false"/> <!--fetchType="eager " 延迟加载 association --> </settings> <!--设置别名,使用 type设置别名表示具体别名 alias:设置某个类型别名 默认类名--> <typeAliases> <!--通过包设置默认别名,不区分大小写--> <package name="top.b3222.pojo"/> </typeAliases> <!--别名 按照顺序 properties?,settings?,typeAliases?,typeHandlers?, objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?, environments?,databaseIdProvider?,mappers?)".--> <plugins> <!--设计分页插件--> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins> <!-- 2. 配置 mybatis-config.xml :在 mybatis-config.xml 文件中,您可以使用 <properties> 元素来引入 jdbc.properties 文件。例如:--> <!--配置数据库的环境--> <!--设置默认使用环境 default:development --> <environments default="development"> <!--设置环境唯一标识:开发环境--> <environment id="development"> <!--事务管理器 type:方式JDBC(原生) MANAGED(被管理 aoc iop spring)--> <transactionManager type="JDBC"/> <!--数据源 type pooled使用数据库连接池 unpooled不属于 jndi:表示使用上下文中的数据源--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> <environment id="test"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!--引入mybatis的映射文件mapper.xml--> <!--也可以包引入--> <!-- <mappers>--> <!-- <mapper resource="top/b3222/mapper/UserDao.xml"/>--> <!-- </mappers>--> <mappers> <package name="top/b3222/mapper"/> </mappers> </configuration>
2. 创建SqlSessionFactory:通过读取配置文件,MyBatis会创建一个 `SqlSessionFactory` 对象。 `SqlSessionFactory` 是MyBatis的核心接口,用于创建 `SqlSession` 对象。
1 public class SqlSessionUtil { 2 private static SqlSessionFactory sqlSessionFactory; 3 4 static { 5 try { 6 // 加载 MyBatis 配置文件 7 String resource = "mybatis-config.xml"; 8 InputStream inputStream = Resources.getResourceAsStream(resource); 9 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 10 } catch (IOException e) { 11 e.printStackTrace(); 12 } 13 } 14 public static SqlSession getSqlSession(boolean flag) { 15 return sqlSessionFactory.openSession(flag); 16 } 17 }
3. 创建SqlSession:通过 `SqlSessionFactory` 的 `openSession()` 方法创建一个 `SqlSession` 对象。 `SqlSession` 是执行SQL操作的入口,它提供了各种操作数据库的方法。
public void addUSer(){ SqlSession sqlSession = SqlSessionUtil.getSqlSession(true); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user=new User(null,"郭","123",21,"男","123@qq.com"); int i = mapper.addUser(user); System.out.println(i); sqlSession.close(); }
4. 执行SQL语句:在 `SqlSession` 对象上调用相应的方法执行SQL语句,如 `selectOne()` 、 `selectList()` 、 `insert()` 、 `update()` 、 `delete()` 等。你可以使用XML映射文件或注解方式来定义和配置SQL语句。
UserMapper->UserMapper.xml
5. 数据库操作:MyBatis会将SQL语句发送到数据库执行,并将结果封装为Java对象返回给应用程序。
6. 事务管理:MyBatis支持事务管理,你可以在 `SqlSession` 对象上调用 `commit()` 、 `rollback()` 和 `close()` 等方法来管理事务。
总的来说,MyBatis的执行流程包括配置MyBatis、创建 `SqlSessionFactory` 、创建 `SqlSession` 、执行SQL语句、数据库操作和事务管理。
请注意,以上是MyBatis的基本执行流程,具体的细节和步骤可能会因为你的应用程序配置和使用方式而有所不同。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~