SpringBoot集成mybatis实例

时间:2021-05-20

一、使用mybatis-spring-boot-starter

1、添加依赖

<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.0.0</version></dependency>

2、启动时导入指定的sql(application.properties)

spring.datasource.schema=import.sql

3、annotation形式

@SpringBootApplication@MapperScan("sample.mybatis.mapper")public class SampleMybatisApplication implements CommandLineRunner { @Autowired private CityMapper cityMapper; public static void main(String[] args) { SpringApplication.run(SampleMybatisApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(this.cityMapper.findByState("CA")); }}

4、xml方式

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <typeAliases> <package name="sample.mybatis.domain"/> </typeAliases> <mappers> <mapper resource="sample/mybatis/mapper/CityMapper.xml"/> </mappers></configuration>

application.properties

spring.datasource.schema=import.sqlmybatis.config=mybatis-config.xml

mapper

@Componentpublic class CityMapper { @Autowired private SqlSessionTemplate sqlSessionTemplate; public City selectCityById(long id) { return this.sqlSessionTemplate.selectOne("selectCityById", id); }}

二、手工集成

1、annotation方式

@Configuration@MapperScan("com.xixicat.modules.dao")@PropertySources({ @PropertySource(value = "classpath:application.properties", ignoreResourceNotFound = true), @PropertySource(value = "file:./application.properties", ignoreResourceNotFound = true) })public class MybatisConfig { @Value("${name:}") private String name; @Value("${database.driverClassName}") private String driverClass; @Value("${database.url}") private String jdbcUrl; @Value("${database.username}") private String dbUser; @Value("${database.password}") private String dbPwd; @Value("${pool.minPoolSize}") private int minPoolSize; @Value("${pool.maxPoolSize}") private int maxPoolSize; @Bean public Filter characterEncodingFilter() { CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); characterEncodingFilter.setForceEncoding(true); return characterEncodingFilter; } @Bean(destroyMethod = "close") public DataSource dataSource(){ HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName(driverClass); hikariConfig.setJdbcUrl(jdbcUrl); hikariConfig.setUsername(dbUser); hikariConfig.setPassword(dbPwd); hikariConfig.setPoolName("springHikariCP"); hikariConfig.setAutoCommit(false); hikariConfig.addDataSourceProperty("cachePrepStmts", "true"); hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250"); hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); hikariConfig.addDataSourceProperty("useServerPrepStmts", "true"); hikariConfig.setMinimumIdle(minPoolSize); hikariConfig.setMaximumPoolSize(maxPoolSize); hikariConfig.setConnectionInitSql("SELECT 1"); HikariDataSource dataSource = new HikariDataSource(hikariConfig); return dataSource; } @Bean public PlatformTransactionManager transactionManager() { return new DataSourceTransactionManager(dataSource()); } @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setFailFast(true); sessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml")); return sessionFactory.getObject(); }}

点评

这种方式有点别扭,而且配置不了拦截式事务拦截,只能采用注解声明,有些冗余

2、xml方式

数据源

<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://.xixicat"} )@ImportResource("classpath:applicationContext-mybatis.xml")@EnableAutoConfigurationpublic class AppMain { // 用于处理编码问题 @Bean public Filter characterEncodingFilter() { CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); characterEncodingFilter.setForceEncoding(true); return characterEncodingFilter; } //文件下载 @Bean public HttpMessageConverters restFileDownloadSupport() { ByteArrayHttpMessageConverter arrayHttpMessageConverter = new ByteArrayHttpMessageConverter(); return new HttpMessageConverters(arrayHttpMessageConverter); } public static void main(String[] args) throws Exception { SpringApplication.run(AppMain.class, args); }}

点评

跟传统的方式集成最为直接,而且事务配置也比较容易上手

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章