Spring Boot 集成MyBatis
在集成MyBatis前,我们先配置一个druid数据源。 Spring Boot 集成druid
druid有很多个配置选项,使用Spring Boot 的配置文件可以方便的配置druid。 在application.yml配置文件中写上: spring:
datasource: name: test
url: jdbc:mysql://192.168.16.137:3306/test username: root password:
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1
timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false
poolPreparedStatements: true maxOpenPreparedStatements: 20
这里通过type: com.alibaba.druid.pool.DruidDataSource配置即可! Spring Boot 集成MyBatis
Spring Boot 集成MyBatis有两种方式,一种简单的方式就是使用MyBatis官方提供的: mybatis-spring-boot-starter
另外一种方式就是仍然用类似mybatis-spring的配置方式,这种方式需要自己写一些代码,但是可以很方便的控制MyBatis的各项配置。
1 / 5
一、mybatis-spring-boot-starter方式 在pom.xml中添加依赖:
mybatis-spring-boot-starter依赖树如下:
其中mybatis使用的3.3.0版本,可以通过:
mapperLocations: classpath:mapper/*.xml typeAliasesPackage: tk.mapper.model 除了上面常见的两项配置,还有:
mybatis.config:mybatis-config.xml配置文件的路径 mybatis.typeHandlersPackage:扫描typeHandlers的包 mybatis.checkConfigLocation:检查配置文件是否存在
mybatis.executorType:设置执行模式(SIMPLE, REUSE, BATCH),默认为SIMPLE
二、mybatis-spring方式
这种方式和平常的用法比较接近。需要添加mybatis依赖和mybatis-spring依赖。 然后创建一个MyBatisConfig配置类:
2 / 5
/** * MyBatis基础配置 */ @Configuration @EnableTransactionManagement public class MyBatisConfig implements TransactionManagementConfigurer { @Autowired DataSource dataSource; @Bean(name = \"sqlSessionFactory\") public SqlSessionFactory sqlSessionFactoryBean() { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setTypeAliasesPackage(\"tk.mybatis.springboot.model\"); //分页插件 PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty(\"reasonable\", \"true\"); properties.setProperty(\"supportMethodsArguments\", \"true\"); properties.setProperty(\"returnPageInfo\", \"check\"); properties.setProperty(\"params\", \"count=countSql\"); pageHelper.setProperties(properties); //添加插件 bean.setPlugins(new Interceptor[]{pageHelper}); //添加XML目录 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); try { bean.setMapperLocations(resolver.getResources(\"classpath:mapper/*.xml\")); return bean.getObject(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { 3 / 5
return new SqlSessionTemplate(sqlSessionFactory); } @Bean @Override public PlatformTransactionManager annotationDrivenTransactionManager() { return new DataSourceTransactionManager(dataSource); } } 上面代码创建了一个SqlSessionFactory和一个SqlSessionTemplate,为了支持注解事务,增加了@EnableTransactionManagement注解,并且反回了一个PlatformTransactionManagerBean。 另外应该注意到这个配置中没有MapperScannerConfigurer,如果我们想要扫描MyBatis的Mapper接口,我们就需要配置这个类,这个配置我们需要单独放到一个类中。 /** * MyBatis扫描接口 * */ @Configuration //TODO 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解 @AutoConfigureAfter(MyBatisConfig.class) public class MyBatisMapperScannerConfig { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName(\"sqlSessionFactory\"); mapperScannerConfigurer.setBasePackage(\"tk.mybatis.springboot.mapper\"); return mapperScannerConfigurer; } } 这个配置一定要注意@AutoConfigureAfter(MyBatisConfig.class),必须有这个配置,否则会有异常。原因就是这个类执行的比较早,由于sqlSessionFactory还不存在,后续执行出错。 做好上面配置以后就可以使用MyBatis了。 关于分页插件和通用Mapper集成 分页插件作为插件的例子在上面代码中有。 4 / 5
通用Mapper配置实际就是配置MapperScannerConfigurer的时候使用
tk.mybatis.spring.mapper.MapperScannerConfigurer即可,配置属性使用Properties。 Spring Boot集成MyBatis的基础项目
我上传到github一个采用第二种方式的集成项目,并且集成了分页插件和通用Mapper,项目包含了简单的配置和操作,仅作为参考。
项目地址:https://github.com/abel533/MyBatis-Spring-Boot 分页插件和通用Mapper的相关信息可以通过上面地址找到。 本文作者:isea533
5 / 5
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务