目录
Spring可以对日志进行分目录打印
日志持久化(让日志进行长期的保存)
MyBatis操作数据库(优秀的持久层框架)
MyBatis的写法
开发规范:
单元测试的写法
传递参数
他的意思是说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}.%ilogger为什么用static的意义:
static就相当于提前把这个创建好了,我们在编程中不是每一步都具有意义。
日志的简单写法:
使用Lombok的注解,@Slf4j(他这个对象名字是log)
总结:使用日志可以快速去发现问题和定位问题,spring默认情况喜爱使用的是INFO(即普通事件)我们可以通过lombok提供的@slf4k注解,和log对象,进行快速的打印日志
他和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") ListselectAll(); } 开发规范:
使用MyBatis
抽象类的实现场景
企业建表规范:字段名/表名全部小写
需要三个字段:(哪怕你只需要一个,也必须要有这三个)
1.id
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() { Listlist=userInfoMapper.selectAll(); log.info(list.toString()); } }
使用MyBatis可能遇到的问题
如果只有一个参数,当然,此时你传递的就可以不是死的1了
如果只有一个参数:那么SQL的名称可以任意的(合法但是有病),#{}代表要进行传参
这个意思是(把id 重命名为userId,当然只有一个参数,他也不用一定去进行重命名这个操作)
上一篇:mysql之row