springBoot整合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()); } }
- 启动类,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); } }
- 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>