springboot+generator+redis+swagger+mysql

准备:Java环境,jdk,tomcat,idea

第一步:创建项目 file->new->project

选择 spring initializr   其他的不用选,默认即可

下一步填写项目名称和修改包名

然后下一步

选择对应的模块

总共5块,web,MySQL,mybatis,jdbc,redis

然后下一步就行了。项目就创建好了

整合generator

我采用的yml配置。

首先把项目创建好之后的默认文件,application.properties修改名称或者删除,就是把后缀改一下,改为application.yml

然后填写一下数据库的配置信息

server:
  port: 8080

spring:
  datasource:
    name: test
    url: jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    #配置初始化大小/最小/最大
    initial-size: 1
    min-idle: 1
    max-active: 20
    #获取连接等待超时时间
    max-wait: 60000
    #间隔多久进行一次检测,检测需要关闭的空闲连接
    time-between-eviction-runs-millis: 60000
    #一个连接在池中最小生存的时间
    min-evictable-idle-time-millis: 300000
    validation-query: SELECT 'x'
    test-while-idle: true
    test-on-borrow: false
    test-on-return: false
    #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
    pool-prepared-statements: false
    max-pool-prepared-statement-per-connection-size: 20
mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.xuyang.multiuser.model


  # redis配置
  redis:
    host: 127.0.0.1   # Redis服务器地址
    port: 6379        # Redis服务器连接端口
    pool:
      max-active: 8   # 连接池最大连接数
      max-wait: 1     # 连接池最大阻塞等待时间
      max-idle: 8     # 连接池中的最大空闲连接
      min-idle: 0     # 连接池中的最小空闲连接
    timeout: 5000        # 连接超时时间(毫秒)

第一个是设置端口,后面就是数据库信息,因为是采用mybatis操作数据库因此还需要配置mybatis,然后就是redis配置

下一步在pom.xml中添加generator的配置

<plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.1</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>

这一串添加的位置是在底部一点,是<plugin>标签开头,而我们创建好的项目的pom.xml中是有这个标签开始的,放在他后面同级就行

下一步创建generatorconfig.xml

创建文件的位置是

在resources下面新建的文件夹然后在文件夹里面创建的generatorconfig.xml 因为采用逆向生成是需要驱动包的,我没有安装本地maven仓库,直接就复制的。只是在xml中有用到。具体xml中有写

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
    <classPathEntry  location="D:\project\multiuser\src\main\resources\generator\mysql-connector-java-5.1.21-bin.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!--数据库连接驱动类,URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/test" userId="root" password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成(实体)模型的包名和位置-->
        <javaModelGenerator targetPackage="main.java.com.xuyang.multiuser.model" targetProject="src">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成XML映射文件的包名和位置 -->
        <sqlMapGenerator targetPackage="main.resources.mapping" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO接口的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="main.java.com.xuyang.multiuser.mapper" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

把xml中的内容改成你的,就可以了,包名和位置需要填写全名称,所以是main.java开始。不然生成的位置不对还要自己慢慢移动,然后对应的文件夹自己可以创建好,也可以不用,会自动帮你创建好。

然后需要运行,点击 在弹出的窗里面选择maven  点击+号,填写名称,选择项目,就可以了

然后选择新建的generator点击运行,就会在对应的文件夹生成文件(先创建文件夹,个人建议,因为可以其他文件夹也创建了,自己清楚有层次)。到此generator整合完毕。就不用自己去一个一个的新建model和mapper

 

整合redis:

pom.xml添加redis依赖

<!-- 整合redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <!--<version>1.3.8.RELEASE</version>-->
        </dependency>
        <!-- 整合redis结束 -->

然后创建redis工具类 我是新建了文件夹来统一管理。

工具类很简单,就只写了一个String 的方法,个人习惯之前用PHP做,直接redis->set(key,value);就好,而java如果不自己写一个工具类,每次用都要实例化一次,然后写stringRedisTemplate.opsForValue()这样一长串,所以还是写一个,其他的一样写若不想写有现成的,上传了。或者百度也有很多。这上传了必须选择一个币,没币的人一大堆。

@Component
public class RedisConfig extends CachingConfigurerSupport {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    public void set(String key, String value){
         ValueOperations<String, String> ops = this.stringRedisTemplate.opsForValue();
         boolean bExistent = this.stringRedisTemplate.hasKey(key);
         if (bExistent) {
             System.out.println("this key is bExistent!");
         }else{
             ops.set(key, value);
         }
    }
    public String get(String key){
        return this.stringRedisTemplate.opsForValue().get(key);
    }
    public void del(String key){
        this.stringRedisTemplate.delete(key);
    }

}

然后需要开启缓存

使用:

很简单的使用方法,和PHP用的时候一样的,然后有一点的是这个是StringRedisTemplate 不是 RedisTemplate

两者的区别是,StringRedisTemplate是字符串,RedisTemplate是字节组,当取出来时StringRedisTemplate是字符串,而RedisTemplate是存入时的格式,若你想取出来不做任何的操作,取出来就是你当初存入的格式,就用RedisTemplate。个人习惯用json。若用RedisTemplate同样的工具类,就是变个对象哈,具体可以百度,地址:https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html 直接拉到第四,同理还有其他的步骤也需要改变。

到此redis整合完成。

整合swagger2:

pom.xml加上一段配置,配置的位置,看一下有<dependency>开头的,然后在其后面加上即可

<!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.5.0</version>
        </dependency>
        <!-- swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.5.0</version>
        </dependency>

下一步写一个配置类(初始化类):

在util中新建一个类

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket swaggerSpringMvcPlugin() {
        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();
    }
}

复制进去就好,然后就可以使用了。

 

PS:最后记录一下,redis存储的字符串所以需要转为json。我测试过,项目自带的json有问题,存不进去,因此自己加一个
pom.xml加一个配置

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
</dependency>

然后写一个json工具类

public class JsonUtils {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 将对象转换成json字符串
     * <p>Title: pojoToJson</p>
     * <p>Description: </p>
     *
     * @param data
     * @return
     */
    public static String objectToJson(Object data) {
        try {
            String string = MAPPER.writeValueAsString(data);
            return string;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 将json结果集转化为对象
     *
     * @param jsonData json数据
     * @param beanType 对象中的object类型
     * @return
     */
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 将json数据转换成pojo对象list
     * <p>Title: jsonToList</p>
     * <p>Description: </p>
     *
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
        try {
            List<T> list = MAPPER.readValue(jsonData, javaType);
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

}
  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述
  • @ApiResponses:HTTP响应整体描述
  • @ApiIgnore:使用该注解忽略这个API
  • @ApiError :发生错误返回的信息
  • @ApiImplicitParam:一个请求参数
  • @ApiImplicitParams:多个请求参数

到此告一段落。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值