0
点赞
收藏
分享

微信扫一扫

【Java从0到架构师】MyBatis - 增删改

闲嫌咸贤 2022-04-21 阅读 51

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文档)

image

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

[外链图片转存中…(img-QXanR1e8-1650522182310)]

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

举报

相关推荐

0 条评论