一、删除

1.1 Controller接受参数

方式一:通过原始的HttpServlitRequest对象获取请求参数

@DeleteMapping("/users")
public Result deleteById(HttpServletRequest request){
	String idStr = request.getParameter("id");
	int id = Integer.parseInt(idStr);
	
	System.out.println("根据ID删除部门" + id);
	return Result.success();
}

方式二:通过Spring提供的@RequestParam注解,将请求参数绑定给方法形参

    @DeleteMapping("/users")
    public Result deleteById(@RequestParam("id") Integer id){
        userService.deleteById(id);
        return Result.success();
    }

注解:@RequestParam——将请求参数绑定给方法形参
注意:
@RequestParam注解required属性默认为true,代表该参数必须传递,如果不传递将报错,如果参数可选,可以将属性设置为false
方式三:如果请求参数名域形参变量相同,直接定义方法形参即可接收。(省略@RequestParam)

    /**
     * 根据ID删除
     */
    @DeleteMapping("/users")
    public Result DeleteById(Integer id){
        userService.deleteById(id);
        return Result.success();
    }

1.2 Service层

    /**
     * 根据ID删除
     * @param id
     */
    @Override
    public void DeleteById(Integer id) {
        userMapper.deleteById(id);
    }

1.3 Mapper层

    /**
     * 根据ID删除
     *
     * @param id
     */
    void deleteById(Integer id);

注意:
执行DML语句时,可以返回一个int类型的返回值,表示改DML执行影响的记录数
如果mapper接口方法形参只有一个普通类型的参数,#{……}里面的属性名可以随便写,如#{id};#{value}
MyBatis中的#{……}和¥{……}的区别
在这里插入图片描述

1.4 测试

在这里插入图片描述

二、新增

2.1 Controller层接收参数

2.1.1 接收JSON格式的请求参数

JSON格式的参数,通常会用一个实体对象接收
规则:JSON数据的键名与方法形参对象的属性名相同,并需要使用@RequestBody注解表示

    /**
     * 添加
     * @param user
     * @return
     */
    @PostMapping("/users")
    public Result insertUser(User user){
        userService.insertUser(user);
        return Result.success();
    }

2.2 Service层

    /**
     * 添加
     * @param user
     */
    @Override
    public void insertUser(User user) {
        userMapper.insertUser(user);
    }

2.3 Mapper层

    /**
     * 添加数据
     * @param user
     */
    void insertUser(User user);

2.4 接收路径参数

    @GetMapping("/users/{id}/{sta}")
    public Result getById(@PathVariable Integer id, @PathVariable String sta) {
        return Result.success();
    }

注解:@PathVariable——设置路径参数

三、修改

3.1 Controller层

    /**
     * 修改
     *
     * @param user
     * @return
     */
    @PutMapping("/users")
    public Result updata(User user) {
        userService.update(user);
        return Result.success();
    }

3.2 Service层

    /**
     * 修改
     * @param user
     */
    @Override
    public void update(User user) {
        userMapper.update(user);
    }

3.3 Mapper层

    void update(User user);

注解:@RequestMapping——用来映射 HTTP 请求到控制器(Controller)的某个方法上
提示:
一个完整的请求路径应该是类上的@RequestMapping的value属性 + 方法上的@RequestMapping的value属性

3.4 动态SQL

随着用户的输入或外部条件的变化而变化的SQL语句,我们称之为动态SQL
:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL
:动态地在行首插入SET关键字,并会删除额外的逗号。(用在update语句中)
后续还有

四、日志技术

4.1 概述

为什么要在程序中记录日志呢?
①便于追踪应用程序中的数据信息、程序的执行过程
②便于对应用程序的性能进行优化
③便于应用程序出现问题之后,排查问题,解决问题
④便于监控系统的运行状态
⑤…………

4.2 日志框架

在这里插入图片描述
①JUL:这是JavaSE平台提供的官方日志框架,也被称为JUL。配置相对简单,但不够灵活,性能较差
②Log4j:一个流行的日志框架,提供了灵活的配置选项,支持多种输出目标
③Logback:基于Log4j升级而来,提供了更多的功能和配置选项,性能Log4j
④Slf4j:(Simple Logging Facade for Java):简单日志门面,提供了一套日志操作的标准接口及抽象类,允许应用程序使用不同的底层日志框架。

4.3 Logback快速入门

①准备工作:引入logback的依赖(Springboot中无需操作)、配置文件logback.xml
②记录日志:定义日志记录对象Logger,记录日志
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- 控制台输出 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
		</encoder>
	</appender>

	<!-- 按照每天生成日志文件 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<!-- 日志文件输出的文件名, %i表示序号 -->
			<FileNamePattern>D:/tlias-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
			<!-- 最多保留的历史日志文件数量 -->
			<MaxHistory>30</MaxHistory>
			<!-- 最大文件大小,超过这个大小会触发滚动到新文件,默认为 10MB -->
			<maxFileSize>10MB</maxFileSize>
		</rollingPolicy>

		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
		</encoder>
	</appender>

	<!-- 日志输出级别 -->
	<root level="ALL">
		<appender-ref ref="STDOUT" />
<!--		<appender-ref ref="FILE" />-->
	</root>
</configuration>

4.4 Logback配置文件logback.xml

①该配置文件是对Logback日志框架输出的日志进行控制的,可以来配置输出的格式、位置及日志开关等
②创建的两种输出日志的位置:控制台、系统文件

	<!-- 控制台输出 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		………………………………
	</appender>

③开启日志(ALL),取消日志(OFF)

	<!-- 日志输出级别 -->
	<root level="ALL">
		<appender-ref ref="STDOUT" />
<!--		<appender-ref ref="FILE" />-->
	</root>

4.5 日志级别

日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级由低到高)
在这里插入图片描述
可以在配置文件中,灵活的控制输出那些类型的日志
在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐