这篇文章给大家介绍Spring与MyBatis的示 香港云主机例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。参考:Mybatis初始化流程及其重要的几个类SqlSessionFactory和SqlSession的介绍和运用SqlSessionFactoryBean 源码解析@Mapper和@MapperScan的区别Spring整合Mybatis原理使用JDBC
的步骤包括设置好数据库的url,用户名,密码等常量加载驱动类,例如MySQL
的com.mysql.cj.jdbc.Driver
。加载com.mysql.cj.jdbc.Driver
时会执行此驱动类静态代码块java.sql.DriverManager.registerDriver(new Driver());
,将驱动注册进DriverManager
使用Driver
或DriverManager
创建Connection
对象使用Connection
对象控制事务是否自动提交,手动提交,回滚或创建Statement
对象执行sql语句下述代码完成了 将mybatis的xml配置文件加载到Conguration
对象中,创建SqlSessionFactory
对象,创建SqlSession
对象,调用指定mapper中的方法完成一次数据库查询Configuration类的结构和mybatis的xml配置文件的结构是一一对应的SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
上述使用mybatis的过程中,将解析mybatis配置文件的流程封装到了SqlSessionFactoryBuilder.build()
方法内部我们也可以使用重载方法,将Configuration
对象作为参数传入build
方法,并显式解析配置文件SqlSessionFactory的作用SqlSessionFactory
是个单个数据库映射关系经过编译后的内存镜像。每一个MyBatis
的应用程序都以一个SqlSessionFactory
对象的实例为核心。SqlSessionFactory
提供创建SqlSession
对象的方法SqlSessionFactory的创建方式直接new一个对象,并为它配置所需要的Configuration
对象用SqlSessionFactoryBuilder
的build()
方法创建。这个方法被重载多次,其核心是将mybatis的xml文件解析到Configuration
对象中,在此基础上创建一个SqlSessionFactory
对象SqlSessionFactory的线程安全性SqlSessionFactory
是线程安全的,SqlSessionFactory
一旦被创建,应该在应用执行期间都存在。在应用运行期间不要重复创建多次,建议使用单例模式,SqlSessionFactory
是创建SqlSession
的工厂SqlSession的作用SqlSession
是执行持久化操作的对象。类似于JDBC
中的Connection
。SqlSession的实现SqlSession
接口提供CURD方法和对事务的管理方法和获取mapper代理对象的方法,它底层封装了JDBC
SqlSession的线程安全性它是应用程序与持久层之间执行交互的一个单线程对象。每个线程都应该有自己的SqlSession
实例。SqlSession
的实例不能被共享,同时SqlSession
也是线程不安全的SqlSessionFactoryBean
的定义信息经常这样使用SqlSessionFactoryBean
类实现了InitializingBean
接口。调用其afterPropertiesSet()
方法时创建SqlSessionFactory
对象并赋给成员变量this.sqlSessionFactory
在Spring
项目中使用MyBatis
后是这样使用的我们关注的就是Spring IoC
是怎么将UserMapper
这个接口实例化并添加到容器中的解决方案:(以UserMapper
为例)使用FactoryBean
为UserMapper
接口创建一个声明类型是UserMapper
,实际类型是动态代理的对象并将对象添加到容器中但是自定义的XxxMapper
是你自己写的,是不确定的。框架不会为每个XxxMapper
创建一个XxxFactoryBean
,所以这个FactoryBean
持有一个成员变量,保存它将要创建的对象的类型。以此做到创建各种Mapper
类的代理对象在Spring
整合MyBatis
的项目中,这个FactoryBean
就是MapperFactoryBean
现在还有一个问题,每个Mapper
都要有一个MapperFactoryBean
。那MapperFactoryBean
在哪里被创建?由MapperFactoryBean
和@MapperScan
来实现@MapperScan
的作用是向容器中添加一个MapperScannerRegistrar
对象,并记录需要被扫描的包这些包下的XxxMapper
将会被MapperScannerRegistrar
扫描到并为其创建一个MapperFactoryFactoryBean
类型的BeanDefinition
对象)关于Spring与MyBatis的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
今天就跟大家聊聊有关Python中怎么实现组内排名,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 求组内的最大/最小/平均值2. 新增一个字段实现累计求和3. 新增一个字段并实现组内累计求和4. 新…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。