欢迎来到全网最完整的Java系列教程!!!
本教程将包含基础知识、进阶知识、常用框架等,循序渐进地分享Java中必须掌握的知识和技术。跟着老K的教程每天学习一点,你会发现入门Java没有想象中那么难。
经过前2篇文章的介绍,我们对MyBatis已经有了最基本的认识。
本期的这篇文章,我们会进入到MyBatis最实用的部分,讲解增删改查的操作。
阅读本文,可配合前两篇文章服用,效果更好:
内容会有点多,建议收藏,等有空或者有需要的时候拿出来查看。
既然要实现和数据库的交互,那自然要创建一个数据库。为了统一教学效果,我们先将下述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个文件的配置来实现:
由于本项目中有2个数据表,分别是employee和department,所以我们也根据数据表的格式设计对应的实体类:
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;
}
}
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实体类只要满足上述2个要求即可。
有了实体类,我们就可以编写映射表了。
我们首先在路径./src/main/resources/下创建一个mappers目录,用来存放各种映射表;
在本例中,我们在该目录下创建一个名为humanResource.xml的文件作为映射,其内代码准备如下:
<?xml version="1.0" encoding="UTF-8" ?>
这是MyBatis的基础配置文件,创建和设置的基础逻辑在MyBatis精讲(一)MyBatis基础配置及持久层连接创建代码实战中已经讲述了,有需要的可以回看。
要实现CRUD的话,只要在mybatis-config.xml文件中的
做好了上述准备工作,我们就可以通过MyBatis向数据库获取数据了。
在humanResource.xml的
在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);
}
}
}
如果一切正常,你将会获得的结果如下:
技术部 郑望
技术部 周武
销售部 孙礼
销售部 赵乾
好了,经过前两讲的知识储备,以及本文的实战操练,我们终于可以实用MyBatis获取数据了。
但MyBatis查询功能并不这么简单,还有很多细节和知识。
为了更好的理解,我们下一篇会专门针对MyBatis的查询操作进行讲解,内容丰富,为了不错过后面的内容,可以现在先关注我哦!
如果你对老K分享的内容有任何疑问,欢迎随时在评论区留言或者私信我。
正在学习的小伙伴记得给老K一个赞哦,你的支持是我持续输出课程内容最大的动力!
IT大佬推荐!学习Java的最优路径 分享多个阶段的学习资源 建议收藏
我是专注于开发领域的@老K玩代码 ,会持续生产关于如何学习编程语言的优质内容。
如果你想学习Java编程,或者想精进你的Java编程能力,可以关注我。
如果你对开发、编程有任何疑问或者有想了解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。
#头条创作挑战赛#
页面更新:2024-03-10
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号