java回顾和leetcode刷题(三)

16 篇文章 2 订阅
5 篇文章 0 订阅

1、IDEA中mapperxml出现如下界面

在这里插入图片描述
解决方法:Ctrl+ALt 然后出现的第一条点进去,然后第二个子类表中会显示出来有个disable选项的,点击一下就可以解决了。

2、@MapperScan

作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类,好处是可以不用在dao层或者mapper层(这两层其实是一个意思)添加@Mapper注解,直接在启动类上面定义就可以了
添加位置:是在Springboot启动类上面添加,
在这里插入图片描述

3、测试方法中

3.1实现步骤

(1)、一个XXXDao(XXXMapper)对应一个XXXDaoTest,使用的时候直接在mapper中,选择一个方法,然后右键,出现Goto后,点击列表最下面的test语句,进行勾选,选择的是junit4,来进行测试
(2)、测试的时候先extends继承主的test类,主要是拿到主的test类中的@RunWith(SpringRunner.class)和@SpringBootTest,因为每次都要把这两个注解加到子测试类中,还不如直接继承父类
(3)、继承好了之后就引入对应的Dao,在Dao上面写上注解@Autowied或者@Resource引入这个Dao(Mapper)类
(4)、在每一个测试类下面进行测试
附图~~~~~~

在这里插入图片描述
在这里插入图片描述

4.编写代码中遇到的一些区别

4.1 Count(*)和Count(1)的区别

一般情况下,Select Count ()和Select Count(1)两着返回结果是一样的假如表沒有主键(Primary key), 那么count(1)比count()快,如果有主键的话,那主键作为count的条件时候count(主键)最快
优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描

4.2 insert和insertSelective区别

两者的区别在于如果选择insert 那么所有的字段都会添加一遍即使没有值
但是如果使用insertSelective就会只给有值的字段赋值(会对传进来的值做非空判断)

4.3 jdbcType=“DATE"和jdbcType=” TIMESTAMP"的区别

当传入null值时,jdbcType 会防止null空指针异常报错
Mybatis 中jdbcType=“DATE” ,日期精确到年月日 剩余分秒 填0补齐
jdbcType=" TIMESTAMP",日期精确到分秒

5、@Transactional

事务,这个之前写那个权限管理系统的时候也有提到过,然后的话,这个现在加在测试类上面,
起到一个回滚的作用,可以避免那些数据写到数据库里面,对数据造成污染
在这里插入图片描述

5.1 控制台打印SQL语句

在配置文件中加入这一行代码即可,实现在控制台打印SQL语句

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

在这里插入图片描述
在这里插入图片描述

6、Postman+IDEA 进行调试

在这里插入图片描述
在这里插入图片描述

6.1 传入的值和后台的值不一致的时候,使用@RequestParam(“username”)

在这里插入图片描述
这个经常会在前后台交接的时候出现,所以这个我们改成@RequestParam(“username”)的值
在这里插入图片描述
再次执行Postman的PostMapping,可以得到以下如图所示的数据
在这里插入图片描述

6.2 传入的是JSON格式的时候,参数列表中加上@RequestBody

传入JSON的时候,加上@RequestBody,用于接收到那个JSON
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐形的稻草人HWS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值