首页 > 数据库 >springboot+mybatis-plus+redis整合(附上脚手架完整代码)

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

时间:2024-01-20 22:04:44浏览次数:43  
标签:mybatisplus springboot true redis boot plus org baomidou com


首先新建一个springboot项目

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


next到这里的时候,我们可以选择用jdk几,还有就是Group,这个一般就是com.公司名字了,artifact就是项目名字。个人开发我还是喜欢用com.名字前缀哈。


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


到了这一步的话,如果对这个项目有什么别的需求,比如需要用到mybatis啥的可以勾相应的选项。其实就是idea自动帮咱导入相关的依赖。这里我们暂且啥也不勾。写过这么多的项目,咱们自己整合的依赖还是挺香的哈。

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

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下面,这是我的一种习惯吧。


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


相应的我们的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整合(附上脚手架完整代码)_spring boot_05


我们可以看到,成功打印出来了数据


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


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


到目前为止我们就成功整合了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是否连接成功

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


发现没有报错,发现确实是有了数据,那么就整合成功了。


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


可能好多细节没说,emmmm我是根据以前得项目速整出来的。有啥缺点希望大家佐证了。完整代码得链接https://github.com/zhangzihang3/redis-boot-mybatislus-spring.git


标签:mybatisplus,springboot,true,redis,boot,plus,org,baomidou,com
From: https://blog.51cto.com/u_16414043/9346301

相关文章

  • springboot项目结合filter,jdk代理实现敏感词过滤(简单版)
    我们对getParameter()这个方法得到的参数进行敏感词过滤。实现思路:利用过滤器拦截所有的路径请求同时在在过滤器执行的时候对getParameter得到的value值进行过滤。最后呢,到我们自己的实现的逻辑中呢?这个value值就被我们做过处理了。1:自定义的过滤配置文件把文件位置放在resource下的......
  • 正确理解springboot国际化简易运行流程
    看源码可以看出–》大致原理localeResolver国际化视图(默认的就是根据请求头带来的区域信息获取Locale进行国际化)返回的本地解析是根据响应头来决定的)接着按住ctrl点localeresolver可知localeresolver是一个接口于是有了这些我们只需通过继承LocaleResolver来自定义我们自己的Loca......
  • springboot中优雅的个性定制化错误页面+源码解析
    boot项目的优点就是帮助我们简化了配置,并且为我们提供了一系列的扩展点供我们使用,其中不乏错误页面的个性化开发。理解错误响应流程我们来到org.springframework.boot.autoconfigure.web.servlet.error下的ErrorMvcAutoConfiguration这里面配置了错误响应的规则。主要介绍里面注册......
  • redis实现延时队列(附完整代码)
    最近在复习所学过的队列的知识,像什么LinkedBlockingDeque。ArrayBlockingQueue,还有ribbitmq里的乱七八糟的,其本质我感觉啊这些技术就是一些队列,只不过大体上分为单机队列和分布式队列而已,当然本文的重点在于redis实现延时队列啊,可能有人会说,用ribbitmq这个专门的消息中间件实现延时......
  • 编译安装Redis
    编译安装Redisubuntu22.04.31.下载redis源码包redis官网下载最新的稳定版本。(7.2)2.编译安装将redis.tar.gz解压到linxu下的/usr/local/src下,用make命令编译。需要一下依赖pkg-configgcc如果报错缺失cc和pkg-config,则需要安装对应的依赖sudoapt-getinst......
  • Redis数据类型
    title:Redis数据类型date:2024-01-2017:01:46permalink:/pages/73a3c3/categories:-中间件-Redistags:-Redis数据类型Redis作为K-V类型的缓存中间件,其value一共有5中数据类型。string,set,list,sorted-set(zset),hash.数据类型查看方式可以通......
  • Redis之Lua脚本讲解
    目录1Lua1.1简介1.1.1注释1.1.2变量1.1.3数据类型1.1.4控制结构1.1.5函数1.1.6模块1.1.7字符串操作1.1.8错误处理1.1.9标准库1.2Redis和Lua脚本结合优点1.3Lua脚本应用和调试1.3.1缓存更新1.3.2原子操作1.3.3数据处理1.3.4分布式锁1.3.5Redis中调试Lua1.4Lua脚......
  • SpringBoot项目通过注解快速解决,字典翻译,响应数据加密,数据脱敏等问题
    简介在几乎所有SpringBoot项目中都会面临字典翻译,接口数据加密,数据脱敏的问题。在每个接口中单独的解决会非常繁琐,因此接下来介绍一下怎么通过注解快速解决这些问题。实现步骤1.引入maven坐标<dependency><groupId>io.gitee.gltqe</groupId><artifactId>......
  • Java21 + SpringBoot3集成WebSocket
    目录前言相关技术简介什么是WebSocketWebSocket的原理WebSocket与HTTP协议的关系WebSocket优点WebSocket应用场景实现方式添加maven依赖添加WebSocket配置类,定义ServerEndpointExporterBean定义WebSocketEndpoint前端创建WebSocket对象总结前言近日心血来潮想做一个开源项目,目......
  • 【Mybatis-Plus】Mybatis-Plus多数据源(三)
    参考官网:多数据源|MyBatis-Plus(baomidou.com)使用方法1、引入dynamic-datasource-spring-boot-starter。1<dependency>2<groupId>com.baomidou</groupId>3<artifactId>dynamic-datasource-spring-boot-starter</artifactId>4&l......