springboot+mybatis-plus+redis整合(附上脚手架完整代码)
首先新建一个springboot项目
next到这里的时候,我们可以选择用jdk几,还有就是Group,这个一般就是com.公司名字了,artifact就是项目名字。个人开发我还是喜欢用com.名字前缀哈。
到了这一步的话,如果对这个项目有什么别的需求,比如需要用到mybatis啥的可以勾相应的选项。其实就是idea自动帮咱导入相关的依赖。这里我们暂且啥也不勾。写过这么多的项目,咱们自己整合的依赖还是挺香的哈。
2:导入相关依赖
可能我比较懒,喜欢用mybatisplus,这些是整合mybatisplus需要的全部依赖,拿来即用哦。
<!--mybatis-plus和生成器依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>2.4.16</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.7</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.20</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-schema</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
导入运行springboot需要的依赖
<!--======================================springboot部分=========================-->
<!-- log4j2 日志 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!--web 启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--测试启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3:使用自动生成器,生成固定的代码
package com.example.zzh;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class util {
public static void main(String[] args) {
run();
}
public static void run() {
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
//生成的类的作者
gc.setAuthor("张子行");
gc.setOpen(false); //生成后是否打开资源管理器
gc.setFileOverride(false); //重新生成时文件是否覆盖
gc.setServiceName("%sService"); //去掉Service接口的首字母I
gc.setIdType(IdType.ID_WORKER); //主键策略
gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
gc.setSwagger2(true);//开启Swagger2模式
mpg.setGlobalConfig(gc);
DataSourceConfig dsc = new DataSourceConfig();
//配置作用的数据库,根据读者电脑配置
dsc.setUrl("jdbc:mysql://localhost:3306/xiaomi?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT&useSSL=false");
//驱动
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
//数据库名字
dsc.setUsername("root");
//指定数据库密码
dsc.setPassword("12345654");
//数据库类型
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 4、包配置
PackageConfig pc = new PackageConfig();
//生成的路径
pc.setParent("com.example.zzh");
pc.setController("controller");
pc.setEntity("entity");
pc.setService("service");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
//为哪张表创建!!!!!!!!!!!!!!!!!!!!
strategy.setInclude("user");
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
strategy.setRestControllerStyle(true); //restful api风格控制器
strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
mpg.setStrategy(strategy);
// 6、执行
mpg.execute();
}
}
点击运行就出来了,当然我这里是把mapper的xml文件放到了resource下面,这是我的一种习惯吧。
相应的我们的spring的配置文件也需要进行改动,我用的mysql版本是8的,我电脑上这样能连,各位根据以前能连上过的配置自行配置数据源,注意我们使用的是mybatisplus而不是mybatis,标注mapper的xml文件位置时需要使用的是
mybatis-plus:
mapper-locations: classpath:mapperXml/.xml
而不是
mybatis:
mapper-locations: classpath:mapperXml/.xml。我以前为了图快就踩过这个坑,哎
server:
port: 8888
spring:
datasource:
url: jdbc:mysql://localhost:3306/testdata?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
password: 128215
username: root
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
type: com.alibaba.druid.pool.DruidDataSource
#注意我们使用的是mybatisplus而不是mybatis
mybatis-plus:
mapper-locations: classpath:mapperXml/*.xml
3:测试
注意大家要在配置类上加上@mapperscan或者在mapper上加上@mapper注解啊。
这里需要注意的是:我们的测试目录需要和我们的启动类的目录结构一致
我们可以看到,成功打印出来了数据
到目前为止我们就成功整合了mybatisplus与springboot了。整合这个东西我们得一步步得来,一下子全部进行,哪错了都不知道。那就接着整合redis吧。
4:整合redis
添加一个配置类,这个是我以前用过得,就拿来用咯,RedisConfig。主要就是配置key ,value得序列化规则啥的,各位可以定制
@Configuration
public class RedisConfig {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public StringRedisSerializer stringRedisSerializer() {
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
return stringRedisSerializer;
}
@Bean
public Jackson2JsonRedisSerializer jackson2JsonRedisSerializer() {
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer
= new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL,
JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
return jackson2JsonRedisSerializer;
}
@Bean
public StringRedisTemplate stringRedisTemplate(){
StringRedisTemplate stringRedisTemplate =
new StringRedisTemplate();
stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
// 开启事务支持
stringRedisTemplate.setEnableTransactionSupport(true);
return stringRedisTemplate;
}
@Bean
public RedisTemplate redisTemplate(){
RedisTemplate<String,Object> redisTemplate
= new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(stringRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(stringRedisSerializer());
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer());
// 开启事务支持
redisTemplate.setEnableTransactionSupport(true);
return redisTemplate;
}
}
还有就是在我们得yml文件中加入redis的地址spring.redis.host=192.168.234.141。根据各位得实际redis地址来配置
5:添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
6:测试redis是否连接成功
发现没有报错,发现确实是有了数据,那么就整合成功了。
可能好多细节没说,emmmm我是根据以前得项目速整出来的。有啥缺点希望大家佐证了。完整代码得链接https://github.com/zhangzihang3/redis-boot-mybatislus-spring.git