##主要内容
>主要框架
>
>准备数据
>
>配置
>
>测试工具及方法
>
##主要框架
springboot v2.1.2,mybatis-plus,redis,mysql
mybatis-plus简化CRUD操作,redis做缓存。
##数据准备
```
CREATE TABLE t_user (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
user_id char(11) NOT NULL COMMENT '用户标识,用手机号作为唯一标识。',
user_name varchar(32) NOT NULL COMMENT '用户名',
user_real_name varchar(32) NOT NULL COMMENT '真实姓名',
user_nick varchar(32) NOT NULL COMMENT '昵称',
user_gender char(1) NOT NULL COMMENT '性别,M/F',
user_memo varchar(256) DEFAULT NULL COMMENT '说明信息',
PRIMARY KEY (id),
UNIQUE KEY user_id_UNIQUE (user_id)
) ENGINE=InnoDB AUTO_INCREMENT=100533 DEFAULT CHARSET=utf8 COMMENT='用户信息表';
```
##配置
###pom.xml中的依赖
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.7.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.0.7.1</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>
<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
```
###application.yml配置
```
server:
port: 8008
logging:
level:
root: info
io.lettuce.core.RedisClient: debug
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/cachetest
username: root
password:
messages:
basename: i18n/Messages,i18n/Pages
jms:
pub-sub-domain: false
activemq:
broker-url: tcp://localhost:61616
redis:
database: 0
host: 127.0.0.1
port: 6379
lettuce:
pool:
max-active: 300
max-idle: 100
min-idle: 10
mybatis-plus:
mapper-locations: classpath:mybatis/mappers/*Mapper.xml
typeAliasesPackage: study.yqwu.cachetest.model
```
###mybatis-plus自动生成代码配置
```
package study.yqwu.cachetest.tools;
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.NamingStrategy;
public class MybatisPlusCodeGenerator {
public static void main(String[] args) {
AutoGenerator autoGenerator = new AutoGenerator();
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setAuthor("yqwu");
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
autoGenerator.setGlobalConfig(globalConfig);
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/cachetest");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("");
autoGenerator.setDataSource(dataSourceConfig);
PackageConfig packageConfig = new PackageConfig();
packageConfig.setModuleName("User");
packageConfig.setParent("study.yqwu.cachetest");
autoGenerator.setPackageInfo(packageConfig);
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix( "t_");
autoGenerator.setStrategy(strategy);
autoGenerator.execute();
}
}
```
###应用启动配置
```
@SpringBootApplication
@EnableCaching
public class CachetestApplication {
public static void main(String[] args) {
SpringApplication.run(CachetestApplication.class, args);
}
```
###redis缓存配置
```
@Override
@Cacheable(value="usercache",key="#id")
public User getUser(Integer id) {
return userMapper.selectById(id);
}
```
##测试工具配置
使用jmeter做交易测试
报文头配置必须加上`Content-Type:application/json`才能支持REST风格测试。
其他使用计数器、随机数等组件做数据查询,略过。