ip会变怎么做网站,网站运营指标,网站品牌建设流程,做网站推广可行吗文章目录 前置知识实战1、无事务操作2、事务操作 总结 前置知识 
MyBatis中的工作原理 
读取配置文件#xff1a;数据库连接信息、事务管理信息以及映射文件的位置加载映射文件#xff1a;加载Mapper.xml这些映射文件#xff0c;解析其中的 SQL 语句和结果映射信息创建 SqlS… 文章目录 前置知识实战1、无事务操作2、事务操作 总结 前置知识 
MyBatis中的工作原理 
读取配置文件数据库连接信息、事务管理信息以及映射文件的位置加载映射文件加载Mapper.xml这些映射文件解析其中的 SQL 语句和结果映射信息创建 SqlSessionFactory通过建造者模式构建创建 SqlSession根据SqlSessionFactory对象获取SqlSession对象获取 Mapper通过 SqlSession可以获取 Mapper 接口的实例其实是通过JDBC代理模式获取的代理对象执行 SQL 语句通过 Mapper 接口的方法执行SQL处理结果集SQL 语句执行后会返回一个结果集MyBatis 会根据映射文件中的结果映射信息将结果集转换成 Java 对象关闭 SqlSession 
实战 
1、无事务操作 
演示代码如下 
Override
public void update() throws InterruptedException {for (long i  100; i  200; i) {ForlanA forlanA  new ForlanA();forlanA.setId(i);forlanA.setName(1);forlanADao.update(forlanA);Thread.sleep(100);}
}控制台打印结果如下  得出结论创建了100个SqlSession关闭了100个SqlSession 
这意味到创建了100连接 在MyBatis框架中Creating a new SqlSession 是指创建了一个新的SqlSession对象。SqlSession是MyBatis中的一个接口它代表了一个数据库会话用于执行SQL语句并获取结果。每次调用SqlSession.openSession()方法时MyBatis都会创建一个新的SqlSession实例但这并不意味着它会立即在MySQL数据库中创建一个新的物理连接。我们都会使用到连接池来管理数据库连接当创建新的SqlSession时如果连接池中有空闲的连接它会从连接池中获取一个已存在的连接如果没有空闲连接连接池会根据其配置自动创建一个新的数据库连接。所以Creating a new SqlSession 并不直接对应于数据库层面的连接创建而是对应于MyBatis内部的会话管理机制。 如何查看数据库有多少连接 一般我们只需要关注两个参数一个是我们配置的最大连接数max_connections一个是当前当前的连接数Threads_connected。查看方式如下 
-- 查看最大连接数
SHOW VARIABLES LIKE max_connections;-- 查看当前连接数
SHOW STATUS LIKE Threads_connected;查看所有活跃的连接及其状态SHOW PROCESSLIST;  Time表示连接空闲的时间单位是秒 
2、事务操作 
代码加上事务注解代码如下 
Override
Transactional
public void update() throws InterruptedException {for (long i  100; i  200; i) {ForlanA forlanA  new ForlanA();forlanA.setId(i);forlanA.setName(1);forlanADao.update(forlanA);Thread.sleep(100);}
}控制台打印结果如下  得出结论只创建了1个SqlSession关闭了1个SqlSession在中间执行的过程中通过先释放再获取的方式避免频繁创建关闭在最终事务提交的时候才关闭SqlSession 
总结 
事务注解不仅开启了事务而且整个事务只会开启一次SqlSession执行完才关闭