1. 什么是框架?
1. 它是我们软件开发中一套解决方案,不同的框架解决不同问题
2. 使用框架的好处
框架封装了很多细节,是开发者可以用极简的方式实现功能
2. 三层架构
1. 实现层:
是用于展示数据的
2. 业务层
是处理业务需求的
3.持久层
是和数据库交互的
三层框架结构图
3. Mybatis 框架概述
是一个持久层框架,是用Java编写的
它封装了jdbc操作的很多细节,它使开发者只需要关注sql语句,而无需关注注册驱动,创建链接等繁杂的过程
他使用ORM思想实现了结果集的封装。
ORM:
Object Relational Mapping对象关系映射
简单来说:
就是把数据库表和实体类及实体类表的属性对应起来
让我们可以操作实体类就实现操作数据库表。
4.Mybatis的入门
Mybatis的环境搭建
第一步:创建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.example</groupId>
<artifactId>Mybatis01-入门</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!--Mybatis-->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--MySQL数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<!--日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!-- 测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</project>
第二步:创建实体类和dao接口
实体类
package com.ithem.domain;
import java.io.Serializable;
import java.util.Date;
/**
*
*/
public class User implements Serializable {
private Integer userid;
private String username;
private Date birthday;
private String sex;
private String address;
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"userid=" + userid +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
dao接口
package com.ithem.Dao;
import com.ithem.domain.User;
import java.util.List;
/**
* 用户持久层
*/
public interface IUserDao {
/**
* 查询所有接口
* @return
*/
List<User> findAll();
}
第三步:创建Mybatis的主配置文件
Mybatis的主配置文件
SqlMapConfig.xml
SqlMapConfig.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>
<!-- 配置环境-->
<environments default="mysql">
<!-- 配置mysql环境-->
<environment id="mysql">
<!-- 配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,也叫连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eeys?serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="yml2245503751"/>
</dataSource>
</environment>
</environments>
<!--给指定配置文件的位置,映射配置文件值的是每个dao独立的配置文件-->
<mappers>
<mapper resource="com/ithem/dao/IUserDao.xml"></mapper>
</mappers>
</configuration>
第四步:创建映射配置文件
IUserDao.xml
IUserDao.xml
<?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="com.ithem.Dao.IUserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.ithem.domain.User">
select * from user
</select>
</mapper>
环境搭建的注意事项
第一步:创建IUserDao.xml 和 IUserDao.java时名称是一样的,因为在Mybatis中它把持久层的操作接口和映射文件也叫作:Mapper
第二步:在Idea创造目录的时候,它和包是不一样的
包在创建时:xxx.xxx.dao它是三级结构
目录在创建时:xxx.xxx.dao它是一级结构
第三步:Mybatis的映射配置文件必须和dao层接口的包结构相同
第四步:配置映射文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
第五步:映射配置文件的操作配置(select),id属性的取值必须dao接口的方法名
当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类