MyBatisSpringMyBatis与Spring整合
前言
mybatisspring的官网地址:https:github。commybatisspring
demo项目地址:https:gitee。comshuashuaworldshuashuablogtreemasterdemomybatissimpledemo环境配置版本要求
maven依赖dependenciesdependencygroupIdorg。mybatisgroupIdmybatisspringartifactIdversion2。0。7versiondependencydependencygroupIdorg。mybatisgroupIdmybatisartifactIdversion3。5。11versiondependencydependencygroupIdorg。springframeworkgroupIdspringcontextartifactIdversion5。3。20versiondependencydependencygroupIdorg。springframeworkgroupIdspringjdbcartifactIdversion4。3。13。RELEASEversiondependency!Druid连接池dependencygroupIdcom。alibabagroupIddruidartifactIdversion1。1。10versiondependency!C3P0连接池dependencygroupIdc3p0groupIdc3p0artifactIdversion0。9。1。2versiondependency!mysql驱动dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdversion5。1。39versiondependencydependencygroupIdorg。projectlombokgroupIdlombokartifactIdversion1。18。24versionoptionaltrueoptionaldependencydependencygroupIdch。qos。logbackgroupIdlogbackclassicartifactIdversion1。2。3versiondependencydependenciesapplication。xml(spring配置)beaniddataSourceclasscom。alibaba。druid。pool。DruidDataSourcepropertynameDriverClassNamevaluecom。mysql。jdbc。DriverpropertynameUrlvaluejdbc:mysql:localhost:3306test?characterEncodingutf8serverTimezoneUTCpropertynameUsernamevaluerootpropertynamePasswordvalue123456beanbeanidsqlSessionFactoryclassorg。mybatis。spring。SqlSessionFactoryBeanpropertynamedataSourcerefdataSourcepropertynameconfigLocationvaluemybatisconfig。xmlpropertynamemapperLocationsvalueclasspath:mybatismapper。xmlbeanbeanidstudentMapperclassorg。mybatis。spring。mapper。MapperFactoryBeanpropertynamemapperInterfacevalueworld。shuashua。StudentMapperpropertynamesqlSessionFactoryrefsqlSessionFactorybeansqlSessionFactory
在基础的MyBatis用法中,是通过SqlSessionFactoryBuilder来创建SqlSessionFactory的。而在MyBatisSpring中,则使用SqlSessionFactoryBean来创建。DataSource属性:SqlSessionFactory唯一的必要属性,用于JDBC的DataSource。这可以是任意的DataSource对象,它的配置方法和其它Spring数据库连接是一样的。configLocation属性:它用来指定MyBatis的XML配置文件路径。它在需要修改MyBatis的基础配置非常有用。通常,基础配置指的是或元素。
需要注意的是,这个配置文件并不需要是一个完整的MyBatis配置。确切地说,任何环境配置(),数据源()和MyBatis的事务管理器()都会被忽略。SqlSessionFactoryBean会创建它自有的MyBatis环境配置(Environment),并按要求设置自定义环境的值。
如果MyBatis在映射器类对应的路径下找不到与之相对应的映射器XML文件,那么也需要配置文件。这时有两种解决办法:第一种是手动在MyBatis的XML配置文件中的部分中指定XML文件的类路径;第二种是设置工厂bean的mapperLocations属性。
其他:在容器管理事务的时候,你可能需要的一个属性是transactionFactoryClass。
如果你使用了多个数据库,那么需要设置databaseIdProvider属性。
小贴士:自1。3。0版本开始,新增的configuration属性能够在没有对应的MyBatisXML配置文件的情况下,直接设置Configuration实例。mybatisconfig。xml(mybatis配置)configurationsettingssettingnamemapUnderscoreToCamelCasevaluetruesettingstypeAliasespackagenameworld。shuashuatypeAliasesconfiguration测试publicstaticvoidmain(String〔〕args)throwsPropertyVetoException,SQLException{读取spring容器ApplicationContextapplicationContextnewClassPathXmlApplicationContext(applicationContext。xml);从容器中获取dataSourceDataSourcedataSourceapplicationContext。getBean(DataSource。class);StudentMapperstudentMapperapplicationContext。getBean(StudentMapper。class);studentMapper。selectAll()。forEach(System。out::println);}事务
一个使用MyBatisSpring的其中一个主要原因是它允许MyBatis参与到Spring的事务管理中。而不是给MyBatis创建一个新的专用事务管理器,MyBatisSpring借助了Spring中的DataSourceTransactionManager来实现事务管理。
一旦配置好了Spring的事务管理器,你就可以在Spring中按你平时的方式来配置事务。并且支持Transactional注解和AOP风格的配置。在事务处理期间,一个单独的SqlSession对象将会被创建和使用。当事务完成时,这个session会以合适的方式提交或回滚。
事务配置好了以后,MyBatisSpring将会透明地管理事务。