在此之前,务必确保你本地环境已经正确配置了 JDK 和 Maven,并且相关的环境变量已经设置。这是你踏上编程之旅的第一步,也是你与代码交互的基础。可通过命令提示符中输入 java -version
和 mvn -v
命令,以验证你的 JDK 和 Maven 是否正确安装和配置。此外,需要确保 Maven 的本地文件 setting.xml
已经正确配置了库的位置。这将为你提供访问各种依赖库的能力,为你的项目提供所需的支持。最后验证此框架的实际功能,同时你的本地数据库已经正确设置,并且已经创建了相应的表。请确保你的表结构和内容符合你的需求(符合Java类的员工表),并为你的应用程序提供所需的数据支持。
本项目视频教程
首先新建一个Java默认项目,在 file> new> project... 选择创建maven项目,勾选Create from archetype中的org.apache.maven.archetypes:maven-archetype-webapp,然后next
Name可以取任何你想要的,不影响项目ben's。展开Artifact Coordinates,为了保证代码能够正常运行, GroupId:org.mybatis、ArtifactId:mybatis、版本默认。
为了管理项目的依赖项和构建配置,以确保项目能够正确构建和运行。配置pom.xml文件,填入如下代码,并且刷新maven,安装对应的依赖。Java版本看你自己是什么版本,我这是jdk9。
<groupId>: 定义项目的组织或团队的唯一标识符。
<artifactId>: 定义项目的唯一标识符。
<version>: 定义项目的版本号。
<dependencies>: 定义项目的依赖项。在这个示例中,项目依赖于 MyBatis 和 MySQL Connector。
<properties>: 定义项目的属性。在这个示例中,定义了 Maven 编译器的源代码和目标版本。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
</project>
创建完毕后,如果你的maven本地内容配置正确,那么不会有任何问题。右键项目,分别创建src/main/java、src/main/resources。创建结果如图所示。
Java配置代码
接口 src/main/java/com/benmao/ins/EmployeeMapper.java 接口,这样可以随时更改方法
package com.benmao.ins;
import com.benmao.top.Employee;
//增删改查
public interface EmployeeMapper {
Employee selectEmployeeId(Integer id);
}
类 src/main/java/com/benmao/ins/top/Employee.java 员工类,对应的数据库表文件也是。
package com.benmao.top;
public class Employee {
private Integer id;
private String name;
private String gender;
private String birth;
private Integer deptid;
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 getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", birth='" + birth + '\'' +
", deptid=" + deptid +
'}';
}
public Integer getDeptid() {
return deptid;
}
public void setDeptid(Integer deptid) {
this.deptid = deptid;
}
}
XML文件配置
src/main/resources/myxml/EmployeeMapper.xml
<mapper>: 根元素,用于包含映射器的配置信息。
namespace: 定义了映射器接口的全名,包括包名。
<select>: 定义了一个查询语句。它的 id 属性必须与映射器接口中的方法名保持一致。 resultType: 设置查询结果的类型,即映射到的实体类的类型。
SQL 语句: 在 <select> 标签内部定义了具体的 SQL 查询语句。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 名称空间必须填写对应的Mapper接口的全名,包括包名 -->
<mapper namespace="com.benmao.ins.EmployeeMapper">
<!-- 查询标签的id必须和接口中的方法名保持一致 -->
<!-- resultType: 设置查询结果的类型 -->
<select id="selectEmployeeId" resultType="com.benmao.top.Employee">
<!-- SQL语句 -->
select * from employee where id = #{id}
</select>
</mapper>
src/main/resources/mybatis-config.xml
此文件是配置数据库的连接地址和所需的账号与密码,同时应用到EmployeeMapper.xml关联,需要自己修改。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/employee" />
<property name="username" value="root" />
<property name="password" value="wjc123456" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 添加你的 Mapper 配置 -->
<!-- 这是需要根据不同而修改-->
<mapper resource="myxml/EmployeeMapper.xml"/>
</mappers>
</configuration>
实现运行
数据库文件
首先需要在本地创建一个数据库,同时随员工类一一对应。
/*
Navicat Premium Data Transfer
Source Server : localhost
Source Server Type : MySQL
Source Server Version : 50540
Source Host : localhost:3306
Source Schema : employee
Target Server Type : MySQL
Target Server Version : 50540
File Encoding : 65001
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for employee
-- ----------------------------
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`id` int(10) NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`gender` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`birth` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`deptid` int(11) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of employee
-- ----------------------------
INSERT INTO `employee` VALUES (2, '笨猫', '男', '2099-9-29', 4);
SET FOREIGN_KEY_CHECKS = 1;
运行文件
在src/main/java/com/benmao/创建HelloMybatis.java ,使用 MyBatis 进行数据库操作的基本流程,包括配置会话工厂、获取映射器对象、执行数据库操作等。
package com.benmao;
import com.benmao.ins.EmployeeMapper;
import com.benmao.top.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class HelloMybatis {
public static void main(String[] args) throws Exception {
// 根据提供的id从数据库表employee中查询出一个员工的信息
// 要求使用mybatis持久层框架完成上面的需求
// 根据提供的文件名获取文件的输入流
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 创建一个会话工厂,专门生产sqlSession会话对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 调用sqlSessionFactory工厂对象的openSession方法打开一个会话
SqlSession sqlSession = sqlSessionFactory.openSession();
// 调用sqlSession会话对象的getMapper方法获取对应的Mapper对象
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
// 调用mapper中的方法完成具体的数据库操作
Employee employee = mapper.selectEmployeeId(2);
System.out.println(employee);
// 关闭和释放资源
sqlSession.close();
}
}