这里我使用的编程工具是IDEA。
使用MyBatis框架进行数据库开发之前,需要先搭建MyBatis环境,MyBatis环境搭建主要有如下基本步骤.
(1)创建工程;
(2)引入相关依赖;
(3)数据库准备;
(4)编写数据库连接信息配置文件;
(5)编写核心配置文件和映射文件。
1.创建工程
启动 启动IDEA开发工具,选择工具栏中的 开发工具,选择工具栏中的File->New->Project选项,弹出 选项,弹出New Project对话框,如图所示 对话框,如图所示
2.引用相关依赖
由于本项目要连接数据库以及对程序进行测试,所以需要在项目的pom.xml文件中导入MySQL驱动包、 驱动包、Junit测试包、 测试包、MyBatis的 核心包等相关依赖。
<?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.example</groupId>
<artifactId>MyBatisDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--MyBatis核心包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--MySQL驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!--JUnit测试包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!--由于IDEA不会自动编译src/main/resources下面的XML目录,所以在该目录下面的资源文件等编译进来-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<!--**表示递归匹配所有子目录层级-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--开启过滤功能-->
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
首次引依赖需要联网 IDEA默认集成的默认集成的Maven,所以在第一次引入依赖时,需要在联网状态下进行,且引入依赖需要较长时间,耐心等待到依赖引入完,所以在第一次引入依赖时,需要在联网状态下进行,且引入依赖需要较长时间,耐心等待到依赖引入完 成即可。
3.创建数据库
注意:先进行“win+R”输入“services.msc”找到mysql点击启动。然后"win+R"输入cmd通过输入"mysql -h localhost -u root -p"和mysql密码。登录mysql !
在MySQL中创建一个名称为中创建一个名称为mybatis的数据库,具体的数据库,具体sql语句如下:
create database mybatis;
创建后可以通过show databases;查看数据库是否创建成功
4.连接信息配置文件
在项目的src/main/resources目录下创建数据库连接的配置文件,这里将其命名为目录下创建数据库连接的配置文件,这里将其命名为db.properties,在该文件中配置数据库连接的参数。
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
mysql.username=root//表示你的数据库的用户名
mysql.password=1234//表示你的数据库的登录密码
5.创建创建MyBatis的核心配置文件
在项目的src/main/resources目录下创建目录下创建MyBatis的核心配置文件,该文件主要用于项目的环境配置,如数据库连接相关配置等,核心配置文件可以随意命名,但通常将其命名为mybatis-config.xml。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="mysql.password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
</configuration>
入门项目
1.2.Mybatis入门程序 入门程
1.数据准备
在mybatis数据库中创建users表,并在users表中插入几条数据。
use mybatis;
create table users(
uid int primary key auto_increment,
uname varchar(20) not null,
uage int not null
);
insert into users(uid,uname,uage) values(null,'张三',20),(null,'李四',18);//这个数据库的代码是表示id自动递增
2.创建 创建POJO实体
在项目的src/main/java目录下创建 目录下创建com.itheima.pojo包,在om.itheima.pojo包下创建 包下创建User类,该类用于封装User对象的属性。
// 声明该Java类所在的包为com.itheima.pojo
// 包用于组织和管理类,避免类名冲突,有助于代码的模块化和可维护性
// 通常pojo(Plain Old Java Object)包用于存放简单的Java对象类,主要用于封装数据
package com.itheima.pojo;
// 定义一个公共的类User,代表这是一个表示用户信息的类
// public关键字表示该类可以被其他包中的类访问
public class User {
// 以下是User类的成员变量,也称为属性或字段
// private关键字表示这些变量是私有的,只能在User类内部访问
// 这样可以保证数据的安全性和封装性
// uid是一个整数类型的变量,用于存储用户的唯一标识
private int uid;
// uname是一个字符串类型的变量,用于存储用户的姓名
private String uname;
// uage是一个整数类型的变量,用于存储用户的年龄
private int uage;
// 访问器方法(Getter),用于获取成员变量uid的值
public int getUid() {
return uid;
}
// 修改器方法(Setter),用于设置成员变量uid的值
// this关键字用于区分局部变量和成员变量,表示当前对象的成员变量
public void setUid(int uid) {
this.uid = uid;
}
// 访问器方法(Getter),用于获取成员变量uname的值
public String getUname() {
return uname;
}
// 修改器方法(Setter),用于设置成员变量uname的值
public void setUname(String uname) {
this.uname = uname;
}
// 访问器方法(Getter),用于获取成员变量uage的值
public int getUage() {
return uage;
}
// 修改器方法(Setter),用于设置成员变量uage的值
public void setUage(int uage) {
this.uage = uage;
}
// @Override是一个注解,告诉编译器这是对父类中toString()方法的重写
// toString()方法是Object类的一个方法,所有Java类都继承自Object类
// 重写该方法是为了提供一个更具可读性的字符串表示形式,方便调试或打印对象
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", uname='" + uname + '\'' +
", uage=" + uage +
'}';
}
}
3.创建映射文件 创建映射文件UserMapper.xml
在项目的src/main/resources目录下创建一个文件夹,在mapper文件夹下创建映射文件UserMapper.xml,该文件主要用于实现 SQL语句和Java对象之间的映射、使SQL语句查询出来的关系型数据能够被封装成Java对象。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper为映射的根节点,namespace指定Dao接口的完整类名,mybatis会根据这个接口动态创建一个实现类去实现这个接口,而这个实现类是一个Mapper对象-->
<mapper namespace="com.itheima.pojo.User">
<!--id='接口中的方法名', parameterType='传入的参数类型', resultType='返回实体类对象,使用包.类名' -->
<select id="findById" parameterType="int" resultType="com.itheima.pojo.User">
select * from users where uid=#{id}
</select>
</mapper>
4.修改 修改mybatis-config.xml配置文件 配置文件
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
5.编写测试类
注意
在 Java 项目中,尤其是使用 Maven 或 Gradle 等构建工具的项目,通常遵循标准的项目目录结构。一般来说,源代码会放在 src/main/java
目录下,而测试代码会放在 src/test/java
目录下。这种分离有助于将生产代码和测试代码区分开来,方便管理和维护。
package Test;
import com.itheima.pojo.User;
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 org.junit.Test;
import java.io.IOException;
import java.io.Reader;
public class UserTest {
@Test
public void userFindByIdTest(){
String resources="mybatis-config.xml";
Reader reader=null;
try {
reader = Resources.getResourceAsReader(resources);
} catch (IOException e) {
throw new RuntimeException(e);
}
SqlSessionFactory sqlMapper= new SqlSessionFactoryBuilder().build(reader);
SqlSession session= sqlMapper.openSession();
User user = session.selectOne("findById", 1);
System.out.println(user);
session.commit();
session.close();
}
}