Java操作数据库(SpringBoot+MyBatis)
文章目录
一、删除
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 日志级别
日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级由低到高)
可以在配置文件中,灵活的控制输出那些类型的日志
更多推荐



所有评论(0)