MyBatis详解2——增删改查操作

  • Post author:
  • Post category:其他




一、SpringBoot单元测试



1.1什么是单元测试

单元测试是指对软件中的最小测试单元进行检查和验证的过程。

执行单元测试就是为了证明某段代码的执行结果是否符合我们的预期。如果测试通过则是符合预期,否则测试失败。



1.2单元测试的好处

1.单元测试不用启动Tomcat

2.如果中途改动了代码,在项目打包的时候发现错误,因为打包的时候会自动执行测试单元,单元测试的错误就会发现。



1.3单元测试的使用



1.3.1生成测试类和方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



1.3.2修改单元测试的类,添加单元测试的方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



二、添加的功能



2.1增加用户操作

默认情况下返回的是受影响的行数

1.UserMapper中添加方法接口

在这里插入图片描述

2.UserMapper.xml中进行用户添加

在这里插入图片描述

3.单元测试

在这里插入图片描述



2.2特殊的添加:返回自增id

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



三、修改功能

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



四、删除



4.1删除功能实现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



4.2扩展功能:@Transactional

单元测试之后将数据进行回滚

在这里插入图片描述



五、查询



5.1单表查询(多条数据)

单条数据的查询在上一篇博客已写

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



5.1.1 参数占位符#{}和${}

#{}:预编译处理

${}:字符直接替换

在这里插入图片描述

#{}:预执行sql,不存在安全问题

${}:直接替换,存在安全问题



5.1.2 ${}使用场景

当传递的参数是一个SQL语句时(不是某个参数的值),则只能使用${}的形式,例如:传递的是desc或者asc时,它是一个SQL语句,而不是某一个参数的值:

在这里插入图片描述



5.1.3 SQL注入问题

sql 注⼊代码:“

’ or 1=’1



在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



5.1.4 like查询

1.使用#: 结果执行报错

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

//程序最终执行的sql:
select * from userinfo where username like '%?%'
//替换后在mysql中执行报错
 select * from userinfo where username like '%'admin'%';

2.使用$:可以实现功能但存在安全风险

在这里插入图片描述

程序正确执行

//将#替换为$执行的语句:
select * from userinfo where username like '%admin%'

3.使用MySQL提供的内置函数**concat()**处理:

拼接处理

在这里插入图片描述

综上:

在这里插入图片描述



5.1.5 ResultMap:结果集映射字典

使用场景:

1.数据库中字段名和程序中的属性名不一致时,只能使用ResultMap才能查询出结果。

2.多表关联查询时(一对一、一对多),如果不使用ResultMap,那么关联的对象将为空,查询不出来结果。

在这里插入图片描述

在这里插入图片描述



5.2、多表查询



5.2.1一对一关系

一篇文章对应一个作者

使用association标签,表示⼀对⼀的结果映射

在这里插入图片描述



5.2.2一对多关系

一个作者对应多篇文章

使用collection标签,表示一对多结果映射

在这里插入图片描述



版权声明:本文为qq_52463861原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。