SpringBoot--配置MyBatis、Logback、PagerHelper、Druid

上篇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

你可能感兴趣的:(SpringBoot--配置MyBatis、Logback、PagerHelper、Druid)