Spring日志完结篇,MyBatis操作数据库(入门)

目录

Spring可以对日志进行分目录打印

日志持久化(让日志进行长期的保存)

MyBatis操作数据库(优秀的持久层框架)

MyBatis的写法

开发规范:

单元测试的写法

传递参数


Spring可以对日志进行分目录打印

他的意思是说spring相关只打印INFO级别的标准,但是他也能获取到debug级别的日志

日志设置颜色(只能控制控制台的颜色(idea的功能) 

日志持久化(让日志进行长期的保存)

数据存储在数据库中,是一种持久化的方式

日志保存在文件中,也是一种持久化的方式

只需要配置文件上,加上logging: file:  name: 即可(注意如果前面有logging需要注意对其,是logging下的文件

默认是idea的项目内部生成目录,然后内部放日志(name既可以设置路径,又可以设置名称,但是path只能设置路径(就算是一个文件名称,也不会被人问是文件名称)name的文件优先级高于path。

日志分割(企业中,通常日志分割是200M,下面这个代码说明到达1KB就进行分割)

logging:

 logback:rollingpolicy:max-file-size: 1KBfile-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=falseusername: rootpassword: lcl15604007179driver-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

抽象类的实现场景

企业建表规范:字段名/表名全部小写

需要三个字段:(哪怕你只需要一个,也必须要有这三个)

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 {@Autowiredprivate UserInfoMapper userInfoMapper;
//    @BeforeEach每个测试方法之前的注解@BeforeEachvoid setUp() {log.info("setUp");}
//  @AfterEach每个测试方法之后的注解@AfterEachvoid tearDown() {log.info("setdown");}@Testvoid selectAll() {List<UserInfo> list=userInfoMapper.selectAll();log.info(list.toString());}
}

使用MyBatis可能遇到的问题

传递参数

如果只有一个参数,当然,此时你传递的就可以不是死的1了

如果只有一个参数:那么SQL的名称可以任意的(合法但是有病),#{}代表要进行传参

这个意思是(把id 重命名为userId,当然只有一个参数,他也不用一定去进行重命名这个操作)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/264711.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea本地调试hadoop 遇到的几个问题

1.DEA对MapReduce的toString调用报错&#xff1a;Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc 解决方法&#xff1a;关闭 IDEA 中的启用“ tostring() ”对象视图 2.代码和hdfs路径都对的情况下&#xff0c;程序…

vs2017+qt5.14.2遇到的问题

1、在安装qt插件后&#xff0c;导入pro文件时&#xff0c;报 msvc-version.conf loaded but QMAKE_MSC_VER isn’t set 修改E:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common\msvc-version.conf文件中添加

令牌桶算法理解学习(限流算法)

令牌桶算法是网络流量整形&#xff08;Traffic Shaping&#xff09;和速率限制&#xff08;Rate Limiting&#xff09;中最常使用的一种算法。典型情况下&#xff0c;令牌桶算法用来控制发送到网络上的数据的数目&#xff0c;并允许突发数据的发送。 用简单的话语来说就是限制…

【媒体开发】利用FFMPEG进行推拉流

1. 下载并启动媒体服务 MediaMTX&#xff0c;也即之前的rtsp-simple-server&#xff0c;是一个即用型、零依赖的实时媒体服务器和媒体代理&#xff0c;允许发布、读取、代理和记录视频和音频流。 从Releases bluenviron/mediamtx GitHub找到最新版&#xff0c;下载对应平台…

FPGA高端项目:UltraScale GTH + SDI 视频解码,SDI转DP输出,提供2套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 GT 高速接口解决方案我目前已有的SDI编解码方案 3、详细设计方案设计框图3G-SDI摄像头LMH0384均衡EQUltraScale GTH 的SDI模式应用UltraScale GTH 基本结构参考时钟的选择和分配UltraScale GTH 发送和接收处理流程UltraScale…

Windows汇编调用printf

VS2022 汇编 项目右键 生成依赖项 生成自定义 勾选masm 链接器 高级 入口点 main X86 .686 .model flat,stdcall option casemap:none includelib ucrt.lib includelib legacy_stdio_definitions.libEXTERN printf:proc.data szFormat db %s,0 szStr db hello,0.code main…

[LeetCode周赛复盘] 第 375 场周赛20231210

[LeetCode周赛复盘] 第 375 场周赛20231210 一、本周周赛总结100143. 统计已测试设备1. 题目描述2. 思路分析3. 代码实现 100155. 双模幂运算1. 题目描述2. 思路分析3. 代码实现 100137. 统计最大元素出现至少 K 次的子数组1. 题目描述2. 思路分析3. 代码实现 100136. 统计好分…

仿交易猫转转闲鱼链接三合一源码+独立后台生成链接

高仿交易猫转转闲鱼源码 搭建教程:添加网站→上传源码→解压源码→导入数据库→修改数据库路径config/Conn.php 不用设置什么伪静态 不会可以看源码里有教程 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

Nacos源码解读12——Nacos中长连接的实现

短连接 VS 长连接 什么是短连接 客户端和服务器每进行一次HTTP操作&#xff0c;就建立一次连接&#xff0c;任务结束就中断连接。 长连接 客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭&#xff0c;客户端再次访问这个服务器时&#xff0c;会继续使用这一条已经建立…

成都工业学院Web技术基础(WEB)实验六:ECMAScript基础语法

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考&#xff0c;前端变化比较大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一样 3、图片和文字仅为示例&#xff0c;需要自行替换 4、如果代码不满足你的要求&#xff0c;请寻求其他的…

【sgAutocomplete】自定义组件:基于elementUI的el-autocomplete组件开发的自动补全下拉框组件(带输入建议的自动补全输入框)

特性&#xff1a; 1、支持本地保存选中过的记录 2、支持动态接口获取匹配下拉框内容 3、可以指定对应的显示label和字段组件key 4、自动生成速记符字段&#xff08;包含声母和全拼两种类型&#xff09;&#xff0c;增强搜索匹配效率 sgAutocomplete源码 <template><!…

STM32F103时钟树

STM32芯片时钟来源 RCC时钟树简图 RCC时钟树详细图 1&#xff0e;当HSI被用于作为PLL时钟的输入时&#xff0c;系统时钟能得到的最大频率是64MHz。 2&#xff0e;用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。AHB和 APB2域的最大频率是72MHz。APB1域…