springBoot搭建redis mysql mybatis项目 - Go语言中文社区

springBoot搭建redis mysql mybatis项目


本文打算使用springBoot + mybatis +  mysql + redis搭建一个maven项目。使用的编辑器是Idea

首先新建一个项目选 spring initializer 然后一路next 选 web,mysql,mybatis,redis 这几个starter。

创建好的pom大概如下所示

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.0.0</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

好了导包完成就可以写配置文件了。把application.propeties 改成application.yml 这样写的方便点。下面是这三个的配置文件。

server:
  port: 8088    #springboot内置tomcat启动端口
spring:
  redis:        #redis连接
    host: 127.0.0.1
    password: 12345678
    port: 6379
    database: 0
  datasource:   #mysql连接
    url: jdbc:mysql://127.0.0.1/test?useUnicode=true&amp;characterEncoding=utf8
    username: root
    password: 12345678
    driver-class-name: com.mysql.jdbc.Driver
mybatis:
  mapper-locations: classpath:mapper/*.xml   生成的mapper.xml位置

然后我们就能用redis了。

对于想要设置redis有效时间或者存方法返回值可以使用jetcache   pom如下

<dependency>
    <groupId>com.alicp.jetcache</groupId>
    <artifactId>jetcache-starter-redis</artifactId>
    <version>2.4.4</version>
</dependency>

然后需要在启动类配置注解才能使用。对于方法缓存是AOP的思想。是不能嵌套的。

在application.yml中配置

jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  local:
    default:
      type: linkedhashmap      //本地缓存形式
      keyConvertor: fastjson
  remote:
    default:
      type: redis              //远程缓存指定redis
      keyConvertor: fastjson
      valueEncoder: java
      valueDecoder: java
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: 127.0.0.1
      port: 6379
      password: 12345678

下面是方法缓存的使用方法,缓存expire+timeUnit时间。使用远程缓存也就是上面配置的redis。还可以指定key的名字,默认安装name名和入参自动生成一个key

@Cached(name = "test",timeUnit = TimeUnit.MINUTES,expire = 5,cacheType = CacheType.REMOTE)
public String getUser(){
    TestPO testPO = testDAO.selectByPrimaryKey(1);
    return testPO.getName();
}

下面让我们看一下那个key.  rdm会乱码。我这在想这个问题怎么处理。不过在服务器上我们可以看到二进制的value

接下来我们来用一下mybatis连接数据库并使用 generator  生成类。需要引入下面的插件

<plugin>
    <!--Mybatis-generator插件,用于自动生成Mapper和POJO-->
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.7</version>
    <configuration>
        <!--配置文件的位置-->
        <configurationFile>src/main/resources/mybatis-generator-config.xml</configurationFile>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
    </configuration>
    <executions>
        <execution>
            <id>Generate MyBatis Artifacts</id>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.6</version>     !此处有个坑。需要1.3.6版本的core,低版本的做生成时会有错误,下面会介绍。
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>     // 5.1.37
        </dependency>
    </dependencies>
</plugin>

对于generatorConfig.xml可以在我的盘里下载下来。里面的配置注意一点。配置table的mapperName属性时当mybatis-generator-core版本低时会出现   必须为元素类型 "table" 声明属性 "mapperName" 错误。把版本调到1.3.6就没事了。

链接:https://pan.baidu.com/s/1YgdlM8pjThXcOQ4SEIeMRQ 
提取码:t087 

然后点这个就行了。

生成完要在启动类注解扫描包。要不加载不到。

然后就可以正常操作数据了。

TK-Mapper

这个是一个更方便操作数据库的框架。

首先导入pom

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

然后写一个基类接口。

package zy.healthy.util;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * @Author zhangyong
 * @Date 2019/4/19 16:05
 */
public interface TkMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

然后在你的dao中实现这个接口就能用了。

package zy.healthy.dao;

import org.springframework.stereotype.Repository;
import zy.healthy.domain.UserPO;
import zy.healthy.util.TkMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
@Repository
public interface UserDAO extends TkMapper<UserPO> {
    
}

在service中就能调用了。

如果你的tk-mapper 有各种错误 可以看我总结的几点错误集锦。我遇到过的错误及解决方法。

https://blog.csdn.net/finalheart/article/details/89405704

 

 

参考:https://github.com/alibaba/jetcache/wiki/Config_CN

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/finalheart/article/details/89020050
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-10 23:53:19
  • 阅读 ( 1201 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢