INSERT INTO skill(name, level) VALUES(#{name}, #{level})
注意:openSession 的参数默认值是 false,不自动提交事务
Skill skill = new Skill();
skill.setLevel(3);
skill.setName(“打架”);
session.insert(“skill.insert”, skill);
session.commit();
[](()主键设置
设置新插入记录的主键 (id) 到参数对象中:
Java开源项目【ali1024.coding.net/public/P7/Java/git】
INSERT INTO skill(name, level) VALUES (#{name}, #{level})
SELECT LAST_INSERT_ID()
还有一种方法:使用 useGeneratedKeys、keyProperty 属性
- 需要数据库驱动支持,比如可以适用于 MySQL,不适用于 Oracle
<insert id=“insert”
useGeneratedKeys=“true”
keyProperty =“id”
parameterType=“com.mj.bean.Skill”>
INSERT INTO skill(name, level) VALUES (#{name}, #{level})
[](()批量添加 - 利用 foreach 标签
<insert id=“batchInsert”
useGeneratedKeys=“true”
keyProperty=“id”
parameterType=“List”>
INSERT INTO skill(name, level) VALUES
(#{skill.name}, #{skill.level})
List skills = new ArrayList<>();
skills.add(new Skill(“Java1”, 111));
skills.add(new Skill(“Java2”, 222));
session.insert(“skill.batchInsert”, skills);
批量添加的效率比【多次单个添加】要高,但是它无法使用 <selectedKey>
获取新插入记录的主键
- 可以使用 useGeneratedKeys 获取主键
批量操作生成的 SQL 语句可能会比较长,有可能会超过数据库的限制
如果传进来的参数是 List,collection 属性值为 list 就可以遍历这个 List
如果传进来的参数是数组,collection 属性值为 array 就可以遍历这个数组
[](()更新
=====================================================================
UPDATE skill SET name = #{name}, level = #{level} WHERE id = #{id}
Skill skill = new Skill(“Java”, 666);
skill.setId(21);
session.update(“skill.update”, skill);
[](()删除
=====================================================================
DELETE FROM skill WHERE id = #{id}
session.delete(“skill.delete”, 10;
[](()批量删除 - 利用 foreach 标签
利用 foreach 和 collection=":list"
批量删除:Java 代码中传入 List
DELETE FROM skill WHERE id IN (
#{id}
)
List ids = new ArrayList<>();
ids.add(23);
ids.add(24);
session.insert(“skill.batchDelete”, ids);
利用 foreach 和 collection="array"
批量删除:Java 代码中传入数组
DELETE FROM skill WHERE id IN
<foreach collection=“array”
item=“id”
open=“(”
close=“)”
separator= 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 “,”>
最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-QXanR1e8-1650522182310)]
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!