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

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编程能力,可以关注我。
  如果你对开发、编程有任何疑问或者有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。
  #头条创作挑战赛#

久其软件信创替代确实是当前政企信息化建设重点,公司正在紧抓当前市场机遇久其软件近期接受投资者调研时称,信创替代确实是当前政企信息化建设的重点,国家相关部门也相继出台各项政策,对政企信息化建设数字化转型提出要求给予指导。公司正在紧抓当前的市场机遇,在技视频丨东莞公安推出宣传片东莞,我的城市,我的家他是一名叉车驾驶员,他是一名网约车司机,他是一名外墙清洗工,他是一名外卖小哥,她是一名包子铺店员,他是一位科研工作者,他是一位青年创业者,他们夫妻俩经营着一家小餐馆他们来自五湖四海2。33mm窄下巴,2160HZ高频PWM调光,真我10系列这些亮点确实不错真我数字系列此前是realme主打产品,但这个系列主要在国外卖。因此,此次的真我数字系列,算是真我在国内的全新产品线,总体配置和设计来看,真我10系列注重外观颜值和屏幕,价格区间在我爸爸重男轻女,我妈妈巴不得我去死我爸爸重男轻女,我妈妈巴不得我去死。今天一个小女孩跟我分享她的心事。女孩说,她爸和他妈离婚了,都重组了家庭。她大部分跟着外婆过。图网络有一次在妈妈那里她生病了,去医院的路上被妈妈骂减肥成功!瓦妮莎盛装出席活动,贵妇气质碾压身旁的卡戴珊瓦妮莎在社媒上,晒出了她出席一场活动的美照。让人惊喜的是,瓦妮莎竟然瘦了不少,俨然已经减肥成功。她穿着一身粉红色长裙,出现在了2022Baby2BabyGala盛典现场,有种全芳斗临近预产期的准妈妈,待产包要准备什么?孕30周以后,准妈妈们就要着手准备待产包了(提前两个多月准备是为了避免遇到早产等突发情况时手忙脚乱)。好多母婴用品商家都有那种成套的待产包,但是里边配置不一定合理,像月子帽月子鞋月AECOM与TEA隆重发布2021全球主题公园和博物馆报告近日,AECOM联合主题娱乐协会TEA(ThemedEntertainmentAssociation)共同发布了2021全球主题公园和博物馆报告。报告显示,主题公园行业于2021年文字的家全面落成中国文字博物馆续建工程和汉字公园对外开放11月16日,位于河南安阳的中国文字博物馆续建工程和汉字公园项目正式对外开放,迎来了首批前来参观游览的客人。这标志着中国文字博物馆全面建成。中国文字博物馆是国务院批准建设的集文物保2022中国5G工业互联网大会本周开幕产业规模破万亿全国项目超4000个长江商报消息长江商报记者李璟11月16日下午,工业和信息化部湖北省政府新闻办在武汉召开新闻发布会,宣布2022中国5G工业互联网大会将于11月19日至21日在武汉光谷科技会展中心召极氪009之初体验还是中国人最懂中国人,MPV市场可能要变天长期以来,国人如果打算购买中档以上的MPV,懂行的朋友们多半会建议购买别克GL8,预算更充足的可能会上丰田埃尔法,或者是雷克萨斯LM。换做以前,这种建议并没有多大问题。但随着新能源借力嘉实创业板增强策略ETF,掘金中国纳斯达克经历了前期的调整,目前创业板的估值已回到较低水平,而创业板中多家优质企业基本面坚挺且成长性可期。不少业内人士认为,投资创业板已具备非常高的性价比,现在正是配置创业板的好时机。投资E