目录
Spring可以对日志进行分目录打印
他的意思是说spring相关只打印INFO级别的标准,但是他也能获取到debug级别的日志
日志设置颜色(只能控制控制台的颜色(idea的功能)
日志持久化(让日志进行长期的保存)
数据存储在数据库中,是一种持久化的方式
日志保存在文件中,也是一种持久化的方式
只需要配置文件上,加上logging: file: name: 即可(注意如果前面有logging需要注意对其,是logging下的文件
默认是idea的项目内部生成目录,然后内部放日志(name既可以设置路径,又可以设置名称,但是path只能设置路径(就算是一个文件名称,也不会被人问是文件名称)name的文件优先级高于path。
日志分割(企业中,通常日志分割是200M,下面这个代码说明到达1KB就进行分割)
logging:
logback: rollingpolicy: max-file-size: 1KB file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
logger为什么用static的意义:
static就相当于提前把这个创建好了,我们在编程中不是每一步都具有意义。
日志的简单写法:
使用Lombok的注解,@Slf4j(他这个对象名字是log)
总结:使用日志可以快速去发现问题和定位问题,spring默认情况喜爱使用的是INFO(即普通事件)我们可以通过lombok提供的@slf4k注解,和log对象,进行快速的打印日志
MyBatis操作数据库(优秀的持久层框架)
他和Spring没有什么关系(只不过是Spring算是把它集成了)
配置(mybatis的applictaion.yml)
spring:
datasource:
# java100对应的意思是创建的数据库的名称
url: jdbc:mysql://127.0.0.1:3306/java100?characterEncoding=utf8&useSSL=false
username: root
password: lcl15604007179
driver-class-name: com.mysql.cj.jdbc.Driver
简单的一个接口调用(看一看查询能否查询到结果)
列子是定义了一个接口,然后select访问的用List保存,然后通过UserInfoContorller去调用userInfoMapper(实现这个接口,去调用这个方法),让他调用这个userInfoMapper
发现能查到结果,而我们做出更改之后发现,它会对名字(表的属性)和你new的类的属性,假如不一致(就会给值为null)
MyBatis的写法
1.xml
2.注解(例子当前是注解的方式)
1.引入Mybatis的依赖,引入对应数据库依赖,比如mysql
2.配置数据库相关信息
3.定义JAVA对象
4.实现
package com.example.myBatis.mapper; //ibatis是Mybatis的前身,加入Mapper之后,mybatis就会告诉Spring,把对象交给Spring管理 import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.springframework.boot.autoconfigure.security.SecurityProperties; import java.util.List; @Mapper public interface UserInfoMapper { //根据不同注解,使用不同方法,select是查询语句 @Select("select*from userInfo") List<UserInfo> selectAll(); }
开发规范:
使用MyBatis
抽象类的实现场景
企业建表规范:字段名/表名全部小写
需要三个字段:(哪怕你只需要一个,也必须要有这三个)
2.创建时间
3.更新时间
(逻辑删除)
单元测试的写法
选择test
package com.example.myBatis.mapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
//@SpringBootTest,是启动Spring容器,我们才能属性注入他内部的东西
@SpringBootTest
@Slf4j
class UserInfoMapperTest {
@Autowired
private UserInfoMapper userInfoMapper;
// @BeforeEach每个测试方法之前的注解
@BeforeEach
void setUp() {
log.info("setUp");
}
// @AfterEach每个测试方法之后的注解
@AfterEach
void tearDown() {
log.info("setdown");
}
@Test
void selectAll() {
List<UserInfo> list=userInfoMapper.selectAll();
log.info(list.toString());
}
}
使用MyBatis可能遇到的问题
传递参数
如果只有一个参数,当然,此时你传递的就可以不是死的1了
如果只有一个参数:那么SQL的名称可以任意的(合法但是有病),#{}代表要进行传参
这个意思是(把id 重命名为userId,当然只有一个参数,他也不用一定去进行重命名这个操作)