1闯参、什么是框架?
它是我們?nèi)缒羌_發(fā)中的一套解決方案,不同的框架解決的是不同的問題。
使用框架的好處:
框架封裝了很多的細(xì)節(jié),使開發(fā)者可以使用極簡的方式實(shí)現(xiàn)功能寸莫。大大提高開發(fā)效率捺萌。
2、三層架構(gòu)
表現(xiàn)層:
適用于展示數(shù)據(jù)的
業(yè)務(wù)層:
是處理業(yè)務(wù)需求
持久層:
是和數(shù)據(jù)庫交互的
3膘茎、持久層技術(shù)解決方案
JDBC技術(shù):
Connection
PreparedStatement
ResultSet
Spring的JdbcTemplate:
Spring中對jdbc的簡單封裝
Apache的DBUtils:
它和Spring的JdbcTemplate很像,也是對Jdbc的簡單封裝
以上這些都不是框架
JDBC是規(guī)范
Spring的JdbcTemplate和Apache的DBUtils都只是工具類
4桃纯、mybatis的概述
mybatis是一個(gè)持久層框架,用java編寫的。
它封裝了jdbc操作的很多細(xì)節(jié),使開發(fā)者只需要關(guān)注sql語句本身披坏,而無需關(guān)注注冊驅(qū)動态坦,創(chuàng)建連接等繁雜過程,
它使用了ORM思想實(shí)現(xiàn)了結(jié)果集的封裝.
ORM:
Object Relational Mapping 對象關(guān)系映射
簡單的說:
就是把數(shù)據(jù)庫表和實(shí)體類及實(shí)體類的屬性對應(yīng)起來
讓我們可以操作實(shí)體類就實(shí)現(xiàn)操作數(shù)據(jù)庫表棒拂。
5伞梯、mybatis的入門:
mybatis的環(huán)境搭建
第一步:創(chuàng)建maven工程并導(dǎo)入坐標(biāo)
第二步:創(chuàng)建實(shí)體類和dao的接口
第三步:創(chuàng)建mybatis的主配置文件
SqlMapConifg.xml
第四步:創(chuàng)建映射配置文件
IUserDao.xml
環(huán)境搭建的注意事項(xiàng):
第一個(gè):創(chuàng)建IUserDao.xml和IUserDao.java時(shí)名稱是為了和我們之前的知識保持一致,在mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper
所以:IUserDao和IUserMapper是一樣的
第二個(gè):在idea中創(chuàng)建目錄的時(shí)候,它和包是不一樣的帚屉,包在創(chuàng)建時(shí):com.itheima.dao它是三級結(jié)構(gòu)谜诫,目錄在創(chuàng)建時(shí):com.itheima.dao是一級目錄
第三個(gè):mybatis的映射配置文件位置必須和dao結(jié)構(gòu)的包結(jié)構(gòu)相同
第四個(gè):映射配置文件的mapper標(biāo)簽namespace屬性的取值必須是dao接口的全限定類名
第五個(gè):映射配置文件的操作配置,id屬性的取值必須是dao接口的方法名
當(dāng)我們遵從了第三、四攻旦、五點(diǎn)之后喻旷,我們在開發(fā)中就無須再寫dao的實(shí)現(xiàn)類。
數(shù)據(jù)庫中的字段:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL COMMENT '用戶名稱',
`birthday` datetime DEFAULT NULL COMMENT '生日',
`sex` char(1) DEFAULT NULL COMMENT '性別',
`address` varchar(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8;
創(chuàng)建maven工程 導(dǎo)入所需要的依賴:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
對應(yīng)的實(shí)體類:
package com.itheima.domain;
import java.io.Serializable;
import java.util.Date;
/**
* @ClassName User
* @Description TODO
* @Author gkz
* @Date 2019/8/18 16:43
* @Version 1.0
**/
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
對應(yīng)的dao層接口:
package com.itheima.dao;
import com.itheima.domain.User;
import java.util.List;
public interface IUserDao {
List<User>findAll();
}
resources包下新建SqlMapConfig.xml(名字無規(guī)定,但是一般叫這個(gè)),SqlMapConfig里的配置:
<?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">
<!--mybatis的主配置文件-->
<configuration>
<!--配置環(huán)境-->
<environments default="mysql">
<!--配置mysql的環(huán)境-->
<environment id="mysql">
<!-- 配置事務(wù)的類型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置數(shù)據(jù)源 (連接池)-->
<dataSource type="POOLED">
<!-- 配置連接數(shù)據(jù)庫的基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置 ,映射配置文件指的是每個(gè)dao獨(dú)立的配置文件-->
<mappers>
<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>
</mappers>
</configuration>
其中mybatis的主要配置文件中的mapper里的屬性resource節(jié)點(diǎn)對應(yīng)的是resources包下的xml文件牢屋,這里可以看到
image.png
resources下有一個(gè)com.itheima.dao下有一個(gè)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.itheima.dao.IUserDao">
<select id="findAll">
select * from user;
</select>
</mapper>
其中 namespace節(jié)點(diǎn)對應(yīng)的是dao層的接口,這里可以看到:
image.png
select中的id節(jié)點(diǎn)所對應(yīng)的是接口里的方法名稱,里面寫sql語句.那么Mybatis的初步搭建就已經(jīng)完成了.