1.创建一个spring boot项目,参考教程
pom文件:注意要有parent和properties
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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>
2.在pom文件里引入mybatis:这里的版本设置需要根据spring的版本来,参考官网。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
3.这里用的是MySQL数据库故引入的mysql connector,引入数据库连接器可能出现的问题,请参照我的另一篇文章:
4.引入阿里的druid数据连接池,更多介绍可在GitHub上查看
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
注意:这里的包不要弄错,以下是错误的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>//发现区别了吗
<version>1.1.2</version>
</dependency>
5.在application.yaml数据源配置。
server:
spring:
datasource:
druid:
# 数据库访问配置, 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.212.112:3306/awifi_faq?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: ****
password: ****
# 连接池配置
initial-size: 5
min-idle: 5
max-active: 20
# 连接等待超时时间
max-wait: 30000
# 配置检测可以关闭的空闲连接间隔时间
time-between-eviction-runs-millis: 60000
# 配置连接在池中的最小生存时间
min-evictable-idle-time-millis: 300000
validation-query: select '1' from dual
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-open-prepared-statements: 20
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters, 去掉后监控界面sql无法统计, 'wall'用于防火墙
filters: stat,wall
# Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
aop-patterns: com.springboot.servie.*
# WebStatFilter配置
web-stat-filter:
enabled: true
# 添加过滤规则
url-pattern: /*
# 忽略过滤的格式
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
# StatViewServlet配置
stat-view-servlet:
enabled: true
# 访问路径为/druid时,跳转到StatViewServlet
url-pattern: /druid/*
# 是否能够重置数据
reset-enable: false
# 需要账号密码才能访问控制台
login-username: druid
login-password: druid123
# IP白名单
# allow: 127.0.0.1
# IP黑名单(共同存在时,deny优先于allow)
# deny: 192.168.1.218
# 配置StatFilter
filter:
stat:
log-slow-sql: true
6.配置到此,如果一切顺利的话,你可以成功访问http://localhost:8080/druid啦,如果出现了问题,可参照我的另外一篇文章。
附上全部的pom文件以作参考:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.helloworld</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
7.现在我们开始利用mybatis对数据进行操作。还记得MVC吗,让我们跟着这样的思路去创建相应的接口。首先我们需要跟数据库里表字段对应的实体类:
@Data
@ToString
@AllArgsConstructor
public class Rate {
private String rate;
private String time;
public Rate(){
/*
这里几个注解可用来省略getter,setter和构造器,是用了lombok插件,
可在以上我给出pom里找到
*/
}
}
8.我们来写一个Mapper文件对数据库进行简单的查询操作:
@Repository
@Mapper
public interface FAQMapper {
@Insert("insert into ratetest(rate) values (#{rate})")
void insertRate(@Param("rate") String rate);
@Select("select *from ratetest order by id DESC limit 1")
@Results({
@Result(property = "rate",column = "rate"),
@Result(property = "time",column = "time")
})
List<Rate> getNewestRate();
}
9.定义一个查询service接口:
public interface SuccessRateService {
void insertRate(String rate);
List<Rate> getNewestRate();
}
10.实现类:
@Service
public class SuccessRateServiceImpl implements SuccessRateService {
@Autowired
private FAQMapper faqMapper;
@Override
public void insertRate(String rate){
faqMapper.insertRate(rate);
}
@Override
public List<Rate> getNewestRate(){
return faqMapper.getNewestRate();
}
}
11.至此,后台的数据库操作逻辑已完成,就差最后一步根据用户的访问请求来做操作了,这里我们写一个简单的controller进行查询操作:
@Controller
public class HelloController {
@Autowired
SuccessRateService successRateService;
@RequestMapping("hello")
@ResponseBody
public List<Rate> hello(){
return successRateService.getNewestRate();
}
}
附录:
完整项目文件目录: