1.Mybatis简介
学习Mybatis之前,肯定要先了解Mybatis是什么。
在了解、学习Mybatis中,官方文档是学习Mybatis的重要工具。地址:mybatis – MyBatis 3 | 简介
Mybatis是什么?官方回答:mybatis – MyBatis 3 | 简介MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
所谓持久层又是什么?持久层(Persistence Layer)是软件架构中的一个层次,主要负责数据的持久化存储和检索。在数据库应用中,持久层负责与数据库进行交互,包括数据的增删改查(CRUD)操作。它是连接业务逻辑层(Business Logic Layer, BLL)和数据存储层(如数据库)之间的桥梁。
在Java开发中,常见的持久层技术有JDBC(Java Database Connectivity)、JPA(Java Persistence API)、Hibernate、MyBatis等。
在之前学习mysql过程中,大家肯定学过JDBC。JDBC是Java语言连接数据库的一种规范,它提供了一套完整的接口,用于在Java应用程序中访问数据库。但是,直接使用JDBC编写数据访问代码比较繁琐,容易出错,且难以维护。
MyBatis是一个半自动的ORM框架,它允许开发者编写SQL语句,并通过映射文件或注解将SQL语句与Java对象进行映射。MyBatis提供了灵活的SQL编写能力,并且支持动态SQL,使得开发者可以编写出更加高效和灵活的SQL语句。但是,这也意味着开发者需要编写更多的SQL语句和映射配置。
所以相比之下,为什么学习Mybatis的答案就很明显了。
2.创建一个Mybatis程序
还是那句话,官方文档是学习Mybatis的重要工具,我接下来的学习也是很大程度上参考官方文档进行的,地址: mybatis – MyBatis 3 | 入门
1.搭建环境
1.新建一个数据库
代码
CREATE DATABASE `mybatis`;
USE `mybatis`;
create table Users(
id int not null auto_increment primary key,
name varchar(10) not null,
age int not null
);
insert into Users(id,name,age) values(null,'张三',20),(null,'李四',18);
结果
2.创建一个项目
1.创建一个maven项目
2.项目结构如下
src目录下:
3.导入maven依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
4.资源过滤
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
5.pom.xml
2.连接数据库
具体步骤:View → Tool Windows → DataBase → 屏幕右侧点加号 → DataSource → MySQL
进入以下界面:输入自己的用户名,密码,数据库名字
1.编写Mybatis核心配置文件
在MybatisConfig.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">
<!-- JDBC 驱动-->
<property name="driver" value="${mysql.driver}"/>
<!-- url数据库的 JDBC URL地址。-->
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--引入映射文件-->
<mapper resource="Mapper/UserMapper.xml"/>
</mappers>
</configuration>
2.配置db.properties文件
在db.properties文件:
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.username=root
mysql.password=admin123
mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
3.编写Mybatis工具类
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "MybatisConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
3.编写实体代码
1.实体类
public class User {
private int id;
private String name;
private int age;
public User() {
}
public User(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getUid() {
return id;
}
public void setUid(int uid) {
this.id = uid;
}
public String getUname() {
return name;
}
public void setUname(String uname) {
this.name = uname;
}
public int getUage() {
return age;
}
public void setUage(int uage) {
this.age = uage;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
2.Dao接口
public interface UserMapper {
List<User> selectUser();
}
3.接口实现类
在UserMapper.xml文件:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tyut.dao.UserMapper">
<select id="selectUser" resultType="com.tyut.pojo.User">
select * from users
</select>
</mapper>
4.测试
1.写测试类
在UserTest类:
public class UserTest {
@Test
public void selectUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectUser();
for (User user: users){
System.out.println(user);
}
session.close();
}
}