一、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标签,表示一对多结果映射