上篇SpringBoot--初入SpringBoot中对SpringBoot如何配置有了初步的了解,只需要配置下pom文件,写一个SpringBoot启动类,就可以启动服务进行访问了,再来看下当初的pom文件导入的依赖:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
这边导入了一个spring-boot-starter-web,SpringBoot中称之为启动器,导入该启动器后,就相当于整合了SpringMVC和Spring,而以前复杂的配置都交由SpringBoot管理
启动器分为两种:
- 以spring-boot-starter为前缀的启动器:SpringBoot内置的启动器
- 以spring-boot-starter为后缀的启动器:第三方框架为支持SpringBoot的启动器
有了这些启动器,配置第三方框架将会变得非常简单
一、配置MyBatis
1. 导入MyBatis启动器
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.3
mysql
mysql-connector-java
8.0.21
org.projectlombok
lombok
1.18.12
provided
2. yml中配置数据库连接信息和MyBatis包扫描路径
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mybatis/*.xml #指定映射文件路径
type-aliases-package: com.aruba.bean
3. 定义员工实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp implements Serializable {
/**
* 员工编号
*/
private Integer empno;
/**
* 姓名
*/
private String ename;
/**
* 职位
*/
private String job;
/**
* 上级
*/
private Integer mgr;
/**
* 入职日期
*/
private Date hiredate;
/**
* 薪水
*/
private Double sal;
/**
* 奖金
*/
private Double comm;
/**
* 部门编号
*/
private Integer deptno;
}
4. 定义Mapper接口
@Mapper
public interface EmpMapper {
@Select("select * from emp")
List findAllEmp();
}
5. 定义Service层接口和实现类
接口:
public interface EmpService {
List findAllEmp();
}
实现类:
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
@Override
public List findAllEmp() {
return empMapper.findAllEmp();
}
}
6. 定义Controller层
@Controller
public class EmpController {
@Autowired
private EmpService empService;
@RequestMapping("findAllEmp")
@ResponseBody
public List findAllEmp() {
return empService.findAllEmp();
}
}
浏览器访问:
二、配置Logback
SpringBoot默认使用Logback作为日志管理,web启动器中集成了它,只需要在resources目录下新建配置文件:logback.xml
内容为:
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
${LOG_HOME}/server.%d{yyyy-MM-dd}.log
30
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
10MB
需要修改的为logger标签中的包名
三、配置PageHelper
PageHelper是一个帮助我们进行分页操作的框架,配置了PageHelper,在Mapper中进行分页只需要一行代码
1. 导入PageHelper启动器
com.github.pagehelper
pagehelper-spring-boot-starter
1.4.2
2. Controller层中定义分页接口
@RequestMapping("findEmpByPage/{pageSize}/{pageNum}")
@ResponseBody
public List findEmpByPage(@PathVariable("pageSize") Integer pageSize,
@PathVariable("pageNum") Integer pageNum) {
return empService.findEmpByPage(pageSize, pageNum);
}
3. Service层实现接口
@Override
public List findEmpByPage(Integer pageSize, Integer pageNum) {
PageHelper.startPage(pageNum, pageSize);
List list = empMapper.findAllEmp();
return list;
}
对比就增加了PageHelper.startPage(pageNum, pageSize);这一句代码
调用结果:
4. 获取其他信息
PageHelper还可以获取额外的信息,如总大小,总页数等
@Override
public List findEmpByPage(Integer pageSize, Integer pageNum) {
Page page = PageHelper.startPage(pageNum, pageSize);
List list = empMapper.findAllEmp();
// Page对象获取
System.out.println("当前页:" + page.getPageNum());
System.out.println("总页数" + page.getPages());
System.out.println("页大小:" + page.getPageSize());
System.out.println("总记录数:" + page.getTotal());
System.out.println("当前页数据" + page.getResult());
// PageInfo对象获取
PageInfo empPageInfo = new PageInfo<>(list);
System.out.println("当前页:" + empPageInfo.getPageNum());
System.out.println("总页数" + empPageInfo.getPages());
System.out.println("页大小:" + empPageInfo.getPageSize());
System.out.println("总记录数:" + empPageInfo.getTotal());
System.out.println("当前页数据" + empPageInfo.getList());
return list;
}
控制台打印:
四、配置Druid
阿里的德鲁伊连接池,之前以及使用过了,配置也很简单
1. 导入Druid启动器
com.alibaba
druid-spring-boot-starter
1.1.10
2. yml中配置
spring:
datasource:
# 使用阿里的Druid连接池
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
# 填写你数据库的url、登录名、密码和数据库名
url: jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root
druid:
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
# 配置DruidStatFilter
web-stat-filter:
enabled: true
url-pattern: "/*"
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
# 配置DruidStatViewServlet
stat-view-servlet:
url-pattern: "/druid/*"
# IP白名单(没有配置或者为空,则允许所有访问)
allow: 127.0.0.1,192.168.8.109
# IP黑名单 (存在共同时,deny优先于allow)
deny: 192.168.1.188
# 禁用HTML页面上的“Reset All”功能
reset-enable: false
# 登录名
login-username: admin
# 登录密码
login-password: 123456
配置完后启动,可以进入Druid的管理网页:
项目地址:
https://gitee.com/aruba/spring-boot-study.git