springboot+mybatis-plus+redis整合(附上脚手架完整代码)

首先新建一个springboot项目

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第1张图片
next到这里的时候,我们可以选择用jdk几,还有就是Group,这个一般就是com.公司名字了,artifact就是项目名字。个人开发我还是喜欢用com.名字前缀哈。

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第2张图片
到了这一步的话,如果对这个项目有什么别的需求,比如需要用到mybatis啥的可以勾相应的选项。其实就是idea自动帮咱导入相关的依赖。这里我们暂且啥也不勾。写过这么多的项目,咱们自己整合的依赖还是挺香的哈。

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第3张图片

2:导入相关依赖

可能我比较懒,喜欢用mybatisplus,这些是整合mybatisplus需要的全部依赖,拿来即用哦。


        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.1.8version>
        dependency>
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-generatorartifactId>
            <version>3.2.0version>
        dependency>
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.0.5version>
        dependency>
        <dependency>
            <groupId>org.apache.velocitygroupId>
            <artifactId>velocity-engine-coreartifactId>
            <version>2.0version>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.11version>
        dependency>
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-lang3artifactId>
            <version>3.8.1version>
        dependency>
        <dependency>
            <groupId>org.codehaus.groovygroupId>
            <artifactId>groovyartifactId>
            <version>2.4.16version>
        dependency>
        <dependency>
            <groupId>org.codehaus.groovygroupId>
            <artifactId>groovy-allartifactId>
            <version>2.4.7version>
        dependency>
        <dependency>
            <groupId>io.swaggergroupId>
            <artifactId>swagger-annotationsartifactId>
            <version>1.5.20version>
        dependency>
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-schemaartifactId>
            <version>2.9.2version>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.8version>
        dependency>

导入运行springboot需要的依赖

 
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-log4j2artifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-starter-loggingartifactId>
                exclusion>
            exclusions>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-thymeleafartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

3:使用自动生成器,生成固定的代码

public class CodeGenerator {
     
    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/testdata?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT&useSSL=false");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("128215");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        //生成的路径
        pc.setParent("com.zzh.data");
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();
        //为哪张表创建!!!!!!!!!!!!!!!!!!!!
        strategy.setInclude("testdata");
        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下面,这是我的一种习惯吧。

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第4张图片
相应的我们的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注解啊。
这里需要注意的是:我们的测试目录需要和我们的启动类的目录结构一致

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第5张图片
我们可以看到,成功打印出来了数据

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第6张图片
springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第7张图片
到目前为止我们就成功整合了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:测试redis是否连接成功

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第8张图片
发现没有报错,发现确实是有了数据,那么就整合成功了。

springboot+mybatis-plus+redis整合(附上脚手架完整代码)_第9张图片
可能好多细节没说,emmmm我是根据以前得项目速整出来的。有啥缺点希望大家佐证了。完整代码得链接https://github.com/zhangzihang3/redis-boot-mybatislus-spring.git

你可能感兴趣的:(springboot,mysql,java,spring,spring,boot,mybatis)