本文为自我学习使用,如转载需本人同意
文章只记录用过的技术和插件等
目录
MyBatisX插件
1.蓝色小鸟和红色小鸟可以相互跳转
2.能自动生成statement
Generte statement
只需要自己输入sql语句即可,当然resultType能够使用别名
单元测试unit
什么是单元测试:
对某一功能代码做测试
一般将白盒测试用于单元测试
白盒测试就是我们知道代码逻辑,对所有的可能情况进行测试
unit依赖
创建测试类
解决实体封装不上,映射对应不上问题
我们在查询的sql结果中发现有的数据明明存在但结果为null
这是因为实体中的属性名称和数据库属性名称不一样
解决方法1:起别名
类似这种
也可以使用sql片段,像下面这种
不过这种方法不灵活,不是直接绑定这些属性
解决方法2:resultMap
配置两边属性映射关系
更改resultType为resultMap,将上面的值放入即可
条件查询说明
如果单个参数是可以直接写的,如:
如果这么写
报错:
多个参数,就必须使用@Param(“对应sql变量名称”)注解:
其中param参数为:
中#{}里的值
条件查询
sql属性不需要变,下面写法存在一定问题,看下面动态sql
参数条件查询
实体类条件查询
Map键值对条件查询
动态条件查询
如果我们在上面多条件查询中将id改为null,也就是我只想查询中国,但是会出现找不到的情况
因为sql也会匹配id为null的,如果我们能判断id为不为null而决定匹不匹配id,这就是动态条件查询
if
例如:
多出and问题
这样写会存在问题,比如我们id为空,而countryName不为空,则会多一个and:
解决方法1:使用恒等式1=1
解决方法2:使用where包裹
choose(when,otherwise)
直接看ppt
也可以使用where包裹
保存数据的注意点
开关Mybatis事物
Mybatis开启了事务,不提交事物会回滚
所以得手动提交事务
如何开启或关闭事物,false为开启事务。ture为关闭事务
保存数据并返回
keyProperty为主键
修改
修改全部字段
修改动态字段
删除
删除一个
批量删除
collection为集合
item为元素
separator为分割符
open是开
close是闭
mybatis会将array自动封装成一个map,map的键为“array”,值为array的值
所以在遍历时要写:
或用param改变默认key名称