文章目录
- 1.动态SQL插入
- 1.1使用注解方式插入数据
- 1.2使用xml方式插入数据
- 1.3何时用注解何时用xml?
- 1.4使用SQL查询中有多个and时,如何自动去除多余and
- 1.4.1方法一:删除and之后的代码如图所示,再次运行
- 1.4.2方法二:加上trim标签后可以直接查询也不会报错
- 1.4.3方法三:使用 `where`标签,也可以自动去除多余and
- 1.4.4`<trim>`和`<where>`优缺点对比
- 2.动态SQL查询
- 2.1使用xml方式查询数据
- 2.2使用注解查询数据
- 3.动态SQL修改
- 3.1使用xml方式修改数据
- 3.1.1一般版本
- 3.1.2使用`<trim>`标签版本
- 3.2使用注解方式修改数据
- 3.2.1使用`<set>`标签
- 4.动态SQL删除
- 4.1使用xml方式删除数据
- 4.1.1使用`<foreach>`标签版本 - 批量删除数据
- 4.2使用注解方式删除数据
- 4.3`<sql><include>`标签
- 5.知识拓展
- 5.1DAO层、Service层和Controller层的区别
- 5.2@Repository和@Mapper
- 5.3项目报错如何自查
大家好,我是晓星航。今天为大家带来的是 MyBatis 操作数据库(进阶) 相关的讲解!😀
1.动态SQL插入
1.1使用注解方式插入数据
使用标签判断gender为不为空,并注入数据

接口代码:

test测试代码:

运行:
运行前:

运行后:

1.2使用xml方式插入数据
.xml文件配置输入:

在接口中定义一个新方法:

test测试代码:

运行:
运行前:

运行后:

1.3何时用注解何时用xml?
什么时候用注解,什么用xml方式
全凭个人喜好
进入公司之后用什么方式?
1.先看公司/团队 是否有要求(互联网公司大多没要求
2.先看同事用什么方式,同事用什么你用什么
3.如果同事用什么的都有
如果自由选择:
1.简单SQL 使用注解
2.动态SQL 使用xml
当前企业中的状态:
差不多55分,看团队的年轻状态(年龄比较小的喜欢注解)
1.4使用SQL查询中有多个and时,如何自动去除多余and


去除and
未加上trim标签时
可以看到修改完后代码报错了,那么是为什么呢?
我们回到.xml文件中查找,发现我们注释掉id和name后,gender前面还有个and因此报错

1.4.1方法一:删除and之后的代码如图所示,再次运行

这次发现了四个结果:
1.4.2方法二:加上trim标签后可以直接查询也不会报错
使用trim标签动态删减and
.xml文件:

test测试文件代码:

查询到了四个结果
查询id去除and,使用trim
运行结果:
1.4.3方法三:使用 where
标签,也可以自动去除多余and
.xml文件:

test测试文件代码:

运行结果:
1.4.4<trim>
和<where>
优缺点对比
trim标签:
where标签:
2.动态SQL查询
2.1使用xml方式查询数据
.xml文件配置输入:
在接口中定义一个新方法:

test测试代码:

运行:
如果只保留查询女那么结果会变为什么呢?

可以看到修改完后代码报错了,那么是为什么呢?
我们回到.xml文件中查找,发现我们注释掉id和name后,gender前面还有个and因此报错

删除and之后的代码如图所示,再次运行

这次发现了四个结果:
数据表student所有结果:

2.2使用注解查询数据
使用trim标签:
.xml文件:

test测试代码:

运行结果:
使用where标签:
.xml文件:

test测试代码:

运行结果:

3.动态SQL修改
3.1使用xml方式修改数据
3.1.1一般版本
.xml文件配置输入:

在接口中定义一个新方法:

test测试代码:

运行:
3.1.2使用<trim>
标签版本

3.1.3使用<set>
标签版本

3.2使用注解方式修改数据
3.2.1使用<set>
标签
.xml文件:

test测试代码:

运行结果:
4.动态SQL删除
4.1使用xml方式删除数据
4.1.1使用<foreach>
标签版本 - 批量删除数据
.xml文件配置输入:

在接口中定义一个新方法:

test测试代码:

运行前:

运行后:


4.2使用注解方式删除数据
.xml文件:

test测试代码:

运行结果:
4.3<sql><include>
标签
使用这两个标签可以简化代码的写法,将一行代码通过传入一个参数解决
5.知识拓展
5.1DAO层、Service层和Controller层的区别
简化理解:
5.2@Repository和@Mapper
5.3项目报错如何自查
1.定位
2.解决

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘