SpringBoot -03 SpringBoot整合MybatisPlus、MP分页插件、Logback日志框架

1 整合MybatisPlus

1.1 导入依赖

  • druid-spring-boot-starter
  • mybatis-plus-boot-starter
  • lombok
<dependencies>
    
    <!-- mybatis-plus起步依赖 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.0</version>
    </dependency>
    
</dependencies>

1.2 修改配置文件

当mapper映射文件与Mapper接口不在统一目录下需要配置classpath

mybatis-plus:
  # 加载mybatis配置文件
  # config-location: mybatis-config.xml
  #加载mapper映射文件配置文件(当mapper映射文件与Mapper接口不在统一目录下需要配置)
  mapper-locations: classpath:mapper/*Mapper.xml
  #mybatis别名配置
  type-aliases-package: com.ying.springboot04.pojo
  configuration:
    #日志配置
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 开启驼峰映射配置
    map-underscore-to-camel-case: true

# druid数据源配置
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql:///你的数据库名
      username: root
      password: 1234
      #初始化连接
      initial-size: 20
      #最大连接数量
      max-active: 
      #最小空闲连接
      min-idle: 10
      #超时等待时间
      max-wait: 00

1.3 扫描Mapper

@SpringBootApplication
@MapperScan(basePackages = "com.ying.springboot01.mapper")
public class Springboot01Application {
    public static void main(String[] args) {
        SpringApplication.run(Springboot0pplication.class, args);
    }
}

1.4 测试

2 整合MP分页插件

2.1 编写MP配置类

配置类和配置文件

@Configuration 表示当前类是配置类

//Spring boot方式
@Configuration
public class MybatisPlusConfig {
    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}
//mybatisplus官网示例
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}

2.2 使用分页插件

@Test
public void testPage(){
    Page<User> page = new Page<>(1,3);
    userMapper.selectPage(page,null);
    page.getRecords().forEach(System.out::println);
    System.out.println(page.getPages());
    System.out.println(page.getTotal());
}

3 整合Logback日志框架

项目中日志系统是必不可少的,目前比较流行的日志框架有log4j、logback等,可能大家都知道,这两个框架的作者是同一个人,Logback旨在作为流行的log4j项目的后续版本,从而恢复log4j离开的位置。另外 slf4j(Simple Logging Facade for Java) 则是一个日志框架,提供了日志系统中常用的接口,logback 和 log4j 则对slf4j 进行了实现。这里主要讲解Logback这个日志框架,它的执行速度上比Log4j可以快上最高10倍以上。

3.1 导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

注意:spring-boot-starter其中包含了 spring-boot-starter-logging,所以导入了spring-boot-starter或者spring-boot-starter-web则无需单独导入spring-boot-starter-logging依赖

3.2 Logbak配置

scan: 当配置文件被修改后, 将会被重新载入。

scanPeriod: 置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

 	<!-- 输出到控制台 -->
	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>   
			<!-- 配置日志输出到控制台的格式 -->
      		<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -- %-4relative %-evel %logger{32} %thread -- %msg%n</pattern>  
			<charset>utf-8</charset> 
    	</encoder>
	</appender>
	
    <!-- 将日志记录到文件当中 -->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 基于时间和大小的的滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名, 必须包含%i, 从1开始-->
            <FileNamePattern>D:/workspace/logs/logback.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
            <!-- 最大20KB 超过最大值,会重新建一个文件-->
            <maxFileSize>20MB</maxFileSize>
            <!-- 所有的日志加起来最大的大小 -->
            <totalSizeCap>400MB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-evel:级别从左显示字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-evel %thread -- %msg%n</pattern>
            <charset>utf-8</charset> 
        </encoder>
    </appender>

    <!-- root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。 -->
    <root level="INFO">
        <!-- 标识这个appender将会添加到这个loger。 -->
        <appender-ref ref="stdout"/>   
        <appender-ref ref="file"/> 
    </root>

</configuration>

3.3 配置说明

配置说明
%d日期转换,花括号中指定日期的格式
%-4relative该条日志输出的时间,这个时间是相对于服务器启动到打印出这条日志的相对时间,4表示时间占用的宽度。
%-evel日志的级别,日志总共级别,分别是debug,info,warn,error,fatal,从左往右日志级别越高,示日志级别占用的字符宽度
%thread该日志所属的线程。
%msg日志信息
%logger{32}输出该日志信息的类,32表示包的层级
%n:换行

3.4 使用日志

@Service
public class UserServiceImpl implements UserService {
    private final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
    @Override
    public void addUser() {
        try {
            System.out.println(10/0);
            System.out.println("添加用户");
            logger.info("xxx时间...添加用户");
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("添加用户失败");
        }
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yinying293

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值