范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

MyBatis精讲(三)一篇文章让你学会用MyBatis获取数据

  序
  欢迎来到全网最完整的Java系列教程!!!
  本教程将包含基础知识、进阶知识、常用框架等,循序渐进地分享Java中必须掌握的知识和技术。跟着老K的教程每天学习一点,你会发现入门Java没有想象中那么难。
  经过前2篇文章的介绍,我们对 MyBatis  已经有了最基本的认识。
  本期的这篇文章,我们会进入到 MyBatis  最实用的部分,讲解增删改查的操作。
  阅读本文,可配合前两篇文章服用,效果更好: MyBatis精讲(一)MyBatis基础配置及持久层连接创建代码实战
  MyBatis精讲(二)常用工具MyBatisUtils类的实现
  内容会有点多,建议收藏,等有空或者有需要的时候拿出来查看。
  一、MyBatis实现CRUD的准备工作
  既然要实现和数据库的交互,那自然要创建一个数据库。为了统一教学效果,我们先将下述SQL语句导入到数据库,以创建统一的数据库: DROP TABLE IF EXISTS `employee`; CREATE TABLE `employee`  (   `id` int UNSIGNED NOT NULL AUTO_INCREMENT,   `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,   `depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,   `salary` decimal(10, 2) NOT NULL,   `age` int NOT NULL,   PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;  DROP TABLE IF EXISTS `department`; CREATE TABLE `department`  (   `did` int UNSIGNED NOT NULL AUTO_INCREMENT,   `depart` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,   `member` int NULL DEFAULT NULL,   PRIMARY KEY (`did`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;  INSERT INTO `employee` VALUES (5001, "赵乾", "销售部", 6000.00, 28); INSERT INTO `employee` VALUES (5002, "孙礼", "销售部", 7000.00, 34); INSERT INTO `employee` VALUES (6001, "周武", "技术部", 6500.00, 27); INSERT INTO `employee` VALUES (6002, "郑望", "技术部", 7500.00, 40);  INSERT INTO `department` VALUES (1, "销售部", 5); INSERT INTO `department` VALUES (2, "技术部", 6);
  所有通过MyBatis实现CRUD的,本质都是通过对3个文件的配置来实现: mybatis-config.xml:配置映射文件; 数据实体的java类文件:在java中与数据库对应的实体; mapper配置文件:查询语法的实现。 1. java实体类
  由于本项目中有2个数据表,分别是employee和department,所以我们也根据数据表的格式设计对应的实体类: Employee.java public class Employee {     private Integer id;     private String name;     private String depart;     private Float salary;     private Integer age;      public Integer getId() {         return id;     }      public void setId(Integer id) {         this.id = id;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public String getDepart() {         return depart;     }      public void setDepart(String depart) {         this.depart = depart;     }      public Float getSalary() {         return salary;     }      public void setSalary(Float salary) {         this.salary = salary;     }      public Integer getAge() {         return age;     }      public void setAge(Integer age) {         this.age = age;     } }Department.java public class Department {     private Integer did;     private String depart;     private Integer member;      public Integer getDid() {         return did;     }      public void setDid(Integer did) {         this.did = did;     }      public String getDepart() {         return depart;     }      public void setDepart(String depart) {         this.depart = depart;     }      public Integer getMember() {         return member;     }      public void setMember(Integer member) {         this.member = member;     } }应用中的java实体类万变不离其宗,都有以下特点; 类的私有属性和数据表中的列信息一一对应; 所有属性都要配置好getter和setter方法。
  java实体类只要满足上述2个要求即可。 2. mapper映射表
  有了实体类,我们就可以编写映射表了。
  我们首先在路径 ./src/main/resources/  下创建一个 mappers  目录,用来存放各种映射表;
  在本例中,我们在该目录下创建一个名为 humanResource.xml  的文件作为映射,其内代码准备如下: <?xml version="1.0" encoding="UTF-8" ?>        此处的   是固定写法,相关资料可以查阅官网:https://mybatis.org/mybatis-3/zh/getting-started.html。   是用来管理映射方法的标签, namespace   命名空间是用来区分调用域的。如果觉得困惑,可以把这个映射表想象成java的类文件,这个命名空间起到了相当于java中类名的作用,这点我们会在后面的内容中详解。 3. mybatis-config.xml
  这是MyBatis的基础配置文件,创建和设置的基础逻辑在MyBatis精讲(一)MyBatis基础配置及持久层连接创建代码实战中已经讲述了,有需要的可以回看。
  要实现CRUD的话,只要在 mybatis-config.xml  文件中的   标签下,加入如下配置即可:       这里的 resource  属性要和上述mapper映射表的名称相对应。 二、第一次通过MyBatis获取数据
  做好了上述准备工作,我们就可以通过MyBatis向数据库获取数据了。 1. 编写mapper映射
  在 humanResource.xml  的   标签里添加相应方法:   是MyBatis中的查询操作标签,用来执行所有与查询相关的操作;   中的 id  属性即这个查询方法的名称,可用于调用;   中的 resultType  属性即这个查询方法的输出结果类型; 为了便于理解,上述标签在java语言中,就相当于: public Employee selectAll(){}  ,只是函数用标签的方法表示出来。 2. 编写第一个测试用例,实现数据获取
  在mapper映射中设置好查询方法后,就可以在java中直接调用该方法,获取数据了,具体方法如下: import koder.mybatis.entity.Employee; import koder.mybatis.utils.MyBatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test;  import java.util.*;  public class MyBatisTest {      @Test     public void testSelectAll() {         SqlSession session = null;         try {             session = MyBatisUtils.openSession();             List list = session.selectList("humanResource.selectAll");             for (Employee ex : list) {                 System.out.println(ex.getDepart() + "	" + ex.getName());             }         } catch (Exception e) {             throw new RuntimeException(e);         } finally {             MyBatisUtils.closeSession(session);         }     } }该测试用例,是通过自写的 MyBatisUtils  实现的,关于 MyBatisUtils  的内容可以查看MyBatis精讲(二)常用工具MyBatisUtils类的实现的内容,这里是【传送门】; 调用mapper中的方法,只需要用 session.selectList("humanResource.selectAll")  即可, selectList  表示获取多结果, humanResource.selectAll  反应的是方法路径,逻辑和java的方法调用一致; 通过增强型for循环,获取并打印所获得的结果。
  如果一切正常,你将会获得的结果如下: 技术部 郑望 技术部 周武 销售部 孙礼 销售部 赵乾
  好了,经过前两讲的知识储备,以及本文的实战操练,我们终于可以实用MyBatis获取数据了。
  但MyBatis查询功能并不这么简单,还有很多细节和知识。
  为了更好的理解,我们下一篇会专门针对 MyBatis的查询操作 进行讲解,内容丰富,为了不错过后面的内容,可以现在先关注我哦!
  如果你对老K分享的内容有任何疑问,欢迎随时在评论区留言或者私信我。
  正在学习的小伙伴记得给老K一个赞哦,你的支持是我持续输出课程内容最大的动力! 阅读推荐
  IT大佬推荐!学习Java的最优路径 分享多个阶段的学习资源 建议收藏
  结束语
  我是专注于开发领域的@老K玩代码  ,会持续生产关于如何学习编程语言的优质内容。
  如果你想学习Java编程,或者想精进你的Java编程能力,可以关注我。
  如果你对开发、编程有任何疑问或者有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。
  #头条创作挑战赛#

北京首钢大手笔投入!秦晓雯顶薪瞄准国手后卫,能否卷土重来?CBA季后赛已经到了总决赛环节,除了山西2比1淘汰广州之外,剩余几轮对决都是横扫,强如广东浙江首钢上海都没有逃过这样的厄运。当然,浙江广东上海三队被横扫有伤病的因素,北京首钢阵容非曾经的北京首钢队内线第一防守人常林为什么打不上球了?北京首钢队在201718赛季时,球队的中锋张松涛状态不佳,身高只有205厘米的常林一下就成为了北京首钢队的主力内线球员,可是他的许多比赛动作都极具争议,下面我们就一起看一下常林是如周末北京徒步阳台山妙峰山)春日生活打卡季因为北京疫情,行程码带星号,没敢回石家庄。心血来潮,和两个室友挑战了一把传说中的三峰穿越,看网上攻略有人说简单有人说困难,是简单还是困难,这没有绝对的说法,需要看个人美国宇航局新火箭SLS试射取消NASA于当地时间4月17日在肯尼迪航天中心的39B发射台暂停了首枚新型火箭SLS(太空发射系统)的试射,SLS和发射台将返回火箭总成构建(VAB)一次。第一颗SLS是用于美国宇航宏观到微观极微至极广,对宇宙与星系的结构分析一磁铁我们看到的磁铁实际的磁铁注意外围的磁力线也是要绕回,并形成闭环。粒子物理解释磁铁之所以能够产生磁性,这是电磁力的作用。电子自旋产生自旋磁矩,电子在轨道上运动产生轨道磁矩,这都科学家发现最古老的玛雅计时系统最近,危地马拉科学家们在一座古代建筑的遗迹中发现了最早的玛雅历法。考古学家在玛雅金字塔上发现了被称为象形文字的图片。这个象形文字代表七只鹿这一天,它是玛雅日历中有特殊名字的260天宋圭武猜想(95)宇宙中不存在绝对的真空宋圭武猜想(95)宇宙中不存在绝对的真空宇宙之间所有的物质,都是互相联系在一起的。物体与物体之间,不存在绝对的真空。宇宙就如一团无限大的面团,且是一个无限循环流转的面团。宇宙空间中清华大学邱新平Angew溶解Ni2对石墨阳极固体电解质界面的影响喜欢就关注我们吧,订阅更多最新消息第一作者HanyingXu通讯作者邱新平(清华大学),JunLu(阿贡国家实验室),KhalilAmine(阿贡国家实验室)DOIhttpsdoi世界地球日杜绝光污染,灵创照明致力打造理性光环境4月22日,我们迎来了第53个世界地球日。一直以来,我们都在努力倡导珍爱地球,节能减排,绿色环保,这不仅仅是个响亮的口号,更是我们为了生活为了未来做出的努力。然而,近年来当我们抬头神秘的天王星天王星是太阳系的第七大行星,1781年由威廉赫歇尔爵士发现,它距离太阳的平均距离是30亿公里,每84地球年绕太阳一圈,它的直径是地球的四倍,主要由氢和氦主导着它的大气,它至少有13不吃夜宵,7点吃晚饭,百岁老人的生活习惯蕴藏着科学道理导读作为一名合格的抗衰达人,怎能不对日新月异的延寿科技了如指掌?关注时光派追新速递专栏,这里收录最新鲜的延寿资讯,带你第一时间链接全球前沿长寿科技动向。提到夜宵这两个字,大家是不是
始于北宋兴于明清,泸州这个古镇,被称为川南古民居的活化石头条创作挑战赛一路耍VOL037期文字王木木图片王木木一个喜欢老街的人,第一念旧第二内心渴望宁静。现代人的生活节奏越来越快,古镇闲逸缓慢的生活,成为我们心中回不去的故乡。虽然回不去莱芜原山,一座神秘的文化富矿秋高气爽,登上济南莱芜区的原山,有祠有阁,石碑众多。最可人的还是山巅看云,天蓝得出奇,云白得耀眼,云卷云舒,变幻出各种图案,让人如入仙境。蓝天白云下的山峦,层层叠叠,有绿有黄,千娇7个江苏周边自驾游好去处推荐工作太辛苦,不如趁着假期跟随小编来一场说走就走的自驾游,放松一下紧张的心情。1。狼山景区南通狼山风景名胜区,位于江苏省南通市崇川区狼山镇街道,是江苏省级风景名胜区国家AAAA级风景平淡的父爱殷殷的情作者草根练剑图片来自罗中立先生的油画父亲感谢原创作者那是我小时候,常坐在父亲肩头,父亲是儿那登天的梯,父亲是那拉车的牛,忘不了粗茶淡饭将我养大,忘不了一声长叹半壶老酒。。每当我听到朝鲜族著名歌追求比得到更快乐丨幸福物质主义是我们对物质条件不满的来源头条创作挑战赛九吉读书笔记生活就是一个欲望接着一个欲望,而不是一件乐事接着一件乐事幸福不是理性的理想,而是想象的理想乍看之下,幸福这东西与爱情有那么一点相似倘若你还要问自己是否身处秋的礼赞作者闫娜秋之美,在色彩秋之韵,在洒脱在纯净。人们总说悲春伤秋,许是因为春之前是清瘦的冬,春谓之新春,让人不免有只见新人笑,哪闻旧人哭的悲凉秋则在盛夏之后,夏红肥绿盈,秋却万物渐空,不禁让人琼斯两双,二姜48分,刘志轩挂零,吉林六人轮换力克江苏迎开门红北京时间10月11日,新赛季CBA常规赛来到第二个比赛日,在下午1500点迎来吉林东北虎与江苏之间的对决,此役姜宇星带伤出战,在琼斯低迷的情况下二姜扛起重任,最终帮助吉林东北虎拿下数码博主评测小米手机被诉侵权厂商玩不起,还是作者信口雌黄?把共性问题拿出来,却只对小米单体输出。这样的还不给下架,等着他继续整活儿?一位UP主测评了小米11ultra,因为测评的内容比较负面,所以这位UP主最终收到了年轻人的第一封律师函。CAB积分榜新疆大胜上海登顶吉林轻取江苏居次席广东缺席判负垫底202223赛季CBA常规赛第1轮,再赛5轮战罢,最新战况积分榜新疆118100以18大胜上海,暂列积分榜第1名,吉林10085以15分轻取江苏,暂列积分榜的次席,辽宁和深圳分列第姜伟泽19中10得27分琼斯22分布莱克尼31分,吉林10085江苏肯帝亚10月11日下午,新赛季CBA联赛第一轮比赛继续进行,吉林农商银行对阵江苏肯帝亚。上赛季吉林队主帅王晗已前往山东高速执教,目前主帅为崔万军,江苏肯帝亚主帅仍旧是李楠指导。吉林农商银宜昌卷桥河湿地公园秋色宜人10月11日,刚刚建成的宜昌市点军区卷桥河湿地公园秋色宜人,金黄的水稻,清澈的河水,嬉戏的野鸭白鹭,蜿蜒的廊道一幅美丽的田园湿地画卷悄然展开,吸引大批市民前来游玩。卷桥河湿地公园规