SpringBoot--整合Mybatis和Redis
1 SpringBoot並沒有提供整合Mybatis的工具包
第一種:使用mybatis官方提供的Spring Boot整合包實現,下載地址:https://github.com/mybatis/spring-boot-starter
第二種:自己整合,與Spring整合Mybatis類似。
2 配置JDBC,將資料來源新增到容器中。
/**
* JDBC配置
* @author Tang
* 2017年11月18日
*/
@Configuration
@PropertySource(value = { "jdbc.properties" })//讀取外部配置檔案
public class JdbcConfig {
// 資料庫配置開始
@Value("${driverClassName}")
private String driverClassName;
@Value("${url}")
private String url;
@Value("${username}")
private String username;
@Value("${password}")
private String password;
@Bean(destroyMethod = "close")
public BasicDataSource dataSource() {
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName(driverClassName);
basicDataSource.setUrl(url);
basicDataSource.setUsername(username);
basicDataSource.setPassword(password);
return basicDataSource;
}
}
需要讀取外部的配置檔案:
jdbc.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=true
username=root
password=123123
3 整合Mybatis
/**
* Mybatis的配置
* @author Tang
* 2017年11月18日
*/
@Configuration
@AutoConfigureAfter(JdbcConfig.class)//保證在JDBC配置完成後例項化
public class MybatisConfig {
@Autowired
private DataSource dataSource;
@Bean
@ConditionalOnMissingBean //當容器裡沒有指定的Bean的情況下建立該物件
public SqlSessionFactoryBean sqlSessionFactory() {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// 設定資料來源
sqlSessionFactoryBean.setDataSource(dataSource);
// 設定mybatis的主配置檔案
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource mybatisConfigXml = resolver.getResource("classpath:mybatis-config.xml");
sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
return sqlSessionFactoryBean;
}
/**
* 定義掃描
* @return
*/
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.text.springboot.dao");
return mapperScannerConfigurer;
}
}
通過Spring的自動注入,注入上一步配置好的JDBC資料來源。
4 配置宣告式事務管理
在Spring Boot中推薦使用@Transactional註解來申明事務。
首先需要匯入依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
當引入jdbc依賴之後,Spring Boot會自動預設分別注入DataSourceTransactionManager或JpaTransactionManager,所以我們不需要任何額外配置就可以用@Transactional註解進行事務的使用。
在需要事務的Service中新增@Transactional註解即可,具體可看Spring的官方文件,關於宣告式事務。
5 整合Redis
/**
* Redis相關配置
* @author Tang
* 2017年11月18日
*/
@Configuration
@PropertySource(value="classpath:redis.properties")
public class RedisConfig {
@Value("${redis.url}")
private String url;
@Value("${redis.port}")
private Integer port;
@Value("${redis.maxTotal}")
private Integer maxTotal;
@Bean
public ShardedJedisPool shardedJedisPool() {
List<JedisShardInfo> jedisShardInfos = new ArrayList<JedisShardInfo>();
jedisShardInfos.add(new JedisShardInfo(url, port));
return new ShardedJedisPool(jedisPoolConfig(), jedisShardInfos);
}
/**
* 執行緒池配置
* @return
*/
private JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(maxTotal);
return jedisPoolConfig;
}
}
配置檔案:
redis.url=127.0.0.1
redis.port=6379
redis.maxTotal=10
和JDBC類似。讀取配置檔案,對映到變數中,然後初始化物件到SpringBoot容器中。
整合redis方式二:
.properties:
# Redis配置
# Redis資料庫索引(預設為0)
spring.redis.database=1
# Redis伺服器地址
spring.redis.host=192.168.41.101
# Redis伺服器連線埠
spring.redis.port=6379
# 連線池最大連線數(使用負值表示沒有限制)
spring.redis.pool.max-active=8
# 連線池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
# 連線池中的最大空閒連線
spring.redis.pool.max-idle=8
# 連線池中的最小空閒連線
spring.redis.pool.min-idle=1
# 連線超時時間(毫秒)
spring.redis.timeout=10000
@Configuration
public class RedisConfig {
/**
* retemplate相關配置
*
* @param factory
* @return
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
// 配置連線工廠
template.setConnectionFactory(factory);
// 使用Jackson2JsonRedisSerializer來序列化和反序列化redis的value值(預設使用JDK的序列化方式)
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
// 指定要序列化的域,field,get和set,以及修飾符範圍,ANY是都有包括private和public
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 指定序列化輸入的型別,類必須是非final修飾的,final修飾的類,比如String,Integer等會跑出異常
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jacksonSeial.setObjectMapper(om);
// 值採用json序列化
template.setValueSerializer(jacksonSeial);
// 使用StringRedisSerializer來序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
// 設定hash key 和value序列化模式
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(jacksonSeial);
template.afterPropertiesSet();
return template;
}
}
依賴包:
<!-- Redis支援 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
工具類:
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 普通快取獲取
* @param key 鍵
* @return 值
*/
public Object get(String key){
return key==null?null:redisTemplate.opsForValue().get(key);
}
參考:https://blog.csdn.net/plei_yue/article/details/79362372
部分摘自某智播客。
相關文章
- SpringBoot--整合DubboSpring Boot
- SpringBoot + Mybatis + Redis 整合入門專案Spring BootMyBatisRedis
- oracle和mybatis整合,批次插入OracleMyBatis
- Spring Boot 整合 Mybatis 和 MySQLSpring BootMyBatisMySql
- mybatis逆向工程和SSM框架整合MyBatisSSM框架
- MyBatis和Spring整合的奧祕MyBatisSpring
- Mybatis和其他主流框架的整合使用MyBatis框架
- Mybatis分頁和Spring的整合MyBatisSpring
- Maven整合SSM和Redis,親測MavenSSMRedis
- Spring+SpringMVC+MyBatis+easyUI整合進階篇(十二)Spring整合Redis快取SpringMVCMyBatisUIRedis快取
- Shiro和Spring MVC、Mybatis整合教程SpringMVCMyBatis
- Spring 整合 MyBatisSpringMyBatis
- SpringMVC整合MybatisSpringMVCMyBatis
- mybatis整合springMyBatisSpring
- Spring整合MyBatisSpringMyBatis
- springmvc mybatis 整合SpringMVCMyBatis
- shiro 整合MybatisMyBatis
- Spring Boot 整合 MyBatis和 SQL Server實踐Spring BootMyBatisSQLServer
- SpringMVC mybatis SSM 整合程式碼生成器 java redis shiro ehcacheSpringMVCMyBatisSSMJavaRedis
- MyBatis(九) 整合Spring、整合SpringMVCMyBatisSpringMVC
- Unit08: Spring與MyBatis整合 、 Spring整合MyBatis應用SpringMyBatis
- mybatis和springmvc整合遇到的問題小結MyBatisSpringMVC
- spring 整合 mybatis 及mybatis 的 crud 操作SpringMyBatis
- Spring Boot 整合 MyBatisSpring BootMyBatis
- Mybatis 整合 ehcache快取MyBatis快取
- Spring整合Mybatis plusSpringMyBatis
- Mybatis與Spring整合MyBatisSpring
- springBoot 整合 mybatisSpring BootMyBatis
- spring boot 整合mybatisSpring BootMyBatis
- Springboot整合MybatisSpring BootMyBatis
- Spring整合JUnit,MybatisSpringMyBatis
- SpringBoot--入門Spring Boot
- SpringBoot整合系列–整合MyBatis-plusSpring BootMyBatis
- MyBatis6:MyBatis整合Spring事物管理(下篇)MyBatisSpring
- spring-boot快速入門學習筆記-整合JPA mybatis rabbitmq mongodb redisSpringboot筆記MyBatisMQMongoDBRedis
- springboot+mybatis整合Spring BootMyBatis
- SpringBoot | 3.2 整合MyBatisSpring BootMyBatis
- Springboot+mybatis 整合Spring BootMyBatis