• spring-boot整合mybatis(web mysql logback配置)


    pom.xml相关的配置说明。

    配置文件看着比价多,在创建spring-boot项目的时候,自需要添加web,mysql,mybatis三个选项即可

    <?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.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.xiaoeyu</groupId>
        <artifactId>springboot2</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springboot2</name>
        <description>Demo project for Spring Boot</description>
        
        <properties>
            <java.version>1.8</java.version>
        </properties>
        
        <dependencies>
            <!--web相关-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--mybatis相关-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.0</version>
            </dependency>
            <!--mysql相关-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </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>
                <!--手动添加的,逆向工程,用于根据数据库中的表生成实体类,dao接口与对应的mapper.xml文件-->
                <plugin>
                    <!--逆向工程:需要的jar包-->
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.7</version>
                    <configuration>
                        <overwrite>true</overwrite>
                        <!--如何生成的配置文件地址-->
                        <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    </configuration>
                    <!--生成时与数据库连接需要的驱动-->
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>5.1.47</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    
    </project>

     逆向工程 :https://www.cnblogs.com/xiaoeyu/p/10402694.html  详细说明,用于生成与数据库中的表相关的类

    创建spring-boot项目时 生成的test测试类说明

      生成的测试类名: 项目+ApplicationTests.java。运行该测试类有几个坑要填好

    package com.xiaoeyu.springboot2;
    
    import com.xiaoeyu.springboot2.dao.EmpMapper;
    import com.xiaoeyu.springboot2.pojo.Emp;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    
    //spring-boot自动生成的测试类,与SSM中spring测试类用的包好像不同
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class Springboot2ApplicationTests {
    
        //不用web,直接通过dao层的接口方法调用测试与数据库的连接是否畅通  EmpMapper为dao层的接口,@Autowired会把 根据Mapper.xml自动生成实现类,注入进来
        @Autowired
        private EmpMapper empMapper;
        
        @Test
        public void contextLoads() {
            //根据id查询,对象
            Emp emp = empMapper.selectByPrimaryKey(7369);
            //打印对应的一个信息,有数据,连接成功
            System.out.println(emp.getHiredate());
        }
    
    }
    1. 启动类,Springboot2Application.java
      package com.xiaoeyu.springboot2;
      
      import org.mybatis.spring.annotation.MapperScan;
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      
      @SpringBootApplication
      //扫描dao所在的包,在测试的时候,不然找不到要注入接口的实体类。
      //dao的实体类是根据dao中的接口与dao对应的mapper.xml由spring生成的。这里要指定dao层接口所在的路径,并在配置文件中指定mapper.xml的路径
      @MapperScan(value = "com.xiaoeyu.springboot2.dao")
      public class Springboot2Application {
          public static void main(String[] args) {
              SpringApplication.run(Springboot2Application.class, args);
          }
      }
    2. application.yml配置文件。指定对应的mapper.xml
      spring:
        datasource:
      #    mysql高版本驱动,为格林时区,+8到北京时区
          url: jdbc:mysql://localhost:3306/bcs?serverTimezone=GMT%2B8
          username: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        profiles:
          active: dev
      
      server:
        port: 80
        servlet:
          context-path: /springboot
      mybatis:
      #  在测试类中,只用自动装配。被注入的类是由dao里面的接口与mapper.xml生成的。这里用来指定dao里面的接口对应的mapper.xml文件的位置
      #  不然在运行测试类的时候,接口中的方法没有实现。
        mapper-locations: classpath:com/xiaoeyu/springboot2/mapper/*.xml
      #  日志设置
      logging:
        level:
          com.xiaoeyu.springboot2.dao: debug
          org.springframework: info

    springboot中,用于处理日志信息的配置文件。相关功能的解释

    <?xml version="1.0" encoding="UTF-8"?>
    <!--本日志文件存在于springboot项目中,并且配置文件名为:logback-spring.xml  被spring识别-->
    <configuration>
        <!--用于日志环境切换,根据主配置文件中的spring.profiles.active指定的不同的环境,把指定的环境中的日志输出到不同的文件中-->
        <!--spring.profiles.active设置的值与<springProfile name="xxxx">的xxx进行匹配,选择日志输出,不管active指定的配置环境是否存在-->
        <springProfile name="dev">
            <property name="LOG_HOME" value="d:/logs/dev" />
        </springProfile>
        <springProfile name="prd">
            <property name="LOG_HOME" value="d:/logs/prd" />
        </springProfile>
        
        <!--定义日志保存的路径,根据日志环境记录的话,这个就有点多余,先注释掉-->
        <!--<property name="LOG_HOME" value="d:/logs" />-->
        
        <!--定义一个控制台输出器,名为console-->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <!--按pattern指定的格式输出日志,编码为UTF-8-->
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread]  %logger{30} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
        
        
        <!--定义一个日滚动(每天生成一份)的日志文件,就是把日志生成文件,存在硬盘中,命名为精确到天的日期,则一天只保留一个日志文件-->
        <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--按pattern指定的格式输出日志,编码为UTF-8-->
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread]  %logger{30} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            
            <!-- 定义保存的文件名 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--%d{yyyy-MM-dd}:日志名字的一部分,则一天只能存在一个这样的日志,重新生成的时候,会去掉之前存在的同名的-->
                <fileNamePattern>${LOG_HOME}/mysprintboot_%d{yyyy-MM-dd}.log</fileNamePattern>
                <!--日志最多保存90天,一天的保存一份的话,就是最多保存90份-->
                <maxHistory>90</maxHistory>
            </rollingPolicy>
            
            <!-- 在日滚动文件中,强制只保存错误xxx级别以上信息 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>DEBUG</level><!--xxx级别的定义-->
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        
        <!-- 定义日志全局最低输出级别是INFO,满足这个才会生成日志,根据配置显示在控制台或者生成文件保存在硬盘 -->
        <root level="INFO">
        
    <appender-ref ref="console" /><!--输出到定义的控制台-->
        <appender-ref ref="file" /><!--输出到定义的日滚动配置-->

      </root>

    </configuration>
  • 相关阅读:
    所谓的小项目
    PHP开发者常犯的10个MySQL错误
    这是掌握cookie最后的一个障碍
    Lua学习笔记(2)——table
    Corona Enterprise 引入第三方 jar 包
    Lua学习笔记(1)
    SQL分页查询笔记
    三两句记录设计模式(1)——简单工厂模式
    Window + Net + Corona + IOS PUSH
    IoC学习
  • 原文地址:https://www.cnblogs.com/xiaoeyu/p/10402604.html
Copyright © 2020-2023  润新知