1、什麼是框架?
它是我們軟件開發中的一套解決方案,不同的框架解決的是不同的問題。
使用框架的好處:
框架封裝了很多的細節,使開發者可以使用極簡的方式實現功能。大大提高開發效率。
2、三層結構
表現層:是用於展示數據的
業務層:是處理業務需要
持久層:是和數據庫交互的
3、持久層技術解決方案
JDBC技術:
Connection
PreparedStatement
ResultSet
Spring的JdbcTemplate:
Spring中對JDBC簡單封裝
Apache的DBUtils:
它和Spring的JdbcTemplate很像,也是對JDBC的簡單封裝
以上這些都不是框架
JDBC是規範
Spring的JdbcTemplate和Apache的DBUtils的DBUtilsd都只是工具類,是規範的實現。
4、mybatis的概述:
mybatis是一個用java編寫的持久層框架。
它封裝了jdbc操作的很多細節,使開發者只用關注sql語句本身,而無需關注註冊驅動,創建連接等繁雜過程。
它使用了ORM思想,實現了結果集的封裝。
ORM(Object Relational Mapping):對象關係映射
簡單來說,就是把數據庫和實體類及實體類的屬性對應起來,
讓我們可以操作實體類就實現操作數據庫表。
數據庫表 實體類
user User
id userId
user_name userName
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)
)
insert into user(id,username,birthday,sex,address) values(41,'AAA','1000-10-10','男','AAA-AAA')
5、mybatis入門
目錄結構如下:
1)mybatis的環境搭建:
第一步:創建maven工程並導入座標
第二步:創建實體類和dao的接口
第三步:創建mybatis的主配置文件
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">
<!--mybaits的主配置文件-->
<configuration>
<environments default="mysql">
<!--配置mysql環境-->
<environment id="mysql">
<!--配置事務類型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置數據源(連接池)-->
<dataSource type="POOLED">
<!--配置數據源(連接池)的基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/406"/>
<property name="username" value="root"/>
<property name="password" value="123456789"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件指的是每個dao配置的文件-->
<mappers>
<mapper resource="com/dao/IUserDao.xml"></mapper>
</mappers>
</configuration>
第四步:創建映射配置文件
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.dao.IUserDao" >
<!--配置查詢所有-->
<select id="findAll" resultType="com.domain.User">
select * from user
</select>
</mapper>
兩個配置文件的約束是不同的,寫錯會報錯
注意事項:
第一個:創建IUserDao.xml和IUserDao.java時,名稱是爲了和之前的知識保持一致。
在Mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper
所以IUserDao和IUserMapper是一樣的
第二個:在idea中創建目錄的時候,它和包是不一樣的
包在創建時:com.dao它是兩級結構
目錄在創建時:com.dao它是一級目錄
(可以點擊項目旁的小齒輪,取消勾選Compact Middle Package)
第三個:Mybatis的映射配置文件位置必須和dao接口的包結構相同
第四個:映射配置文件的mapper標籤namespace屬性的取值必須是dao接口的全限定類名
第五個:映射配置文件的操作配置(select),id屬性的取值必須是dao接口的方法名
當我們遵循了第三、四、五點之後,我們在開發中就無需再寫dao的實現類了。
2)mybatis的入門案列:
第一步:讀取配置文件
第二步:創建SqlSessionFactory工廠
第三步:創建SqlSession
第四步:創建Dao接口的代理對象
第五步:執行dao中的方法
第六步:釋放資源
package com.test;
import com.dao.IUserDao;
import com.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class MybatisTest {
public static void main(String[] args) throws Exception{
//1.讀取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.創建SqlSessionFactory工廠
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工廠生成SqlSession對象
SqlSession session = factory.openSession();
//4.使用SqlSession創建Dao接口的代理對象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理對象執行方法
List<User> users = userDao.findAll();
for(User user:users){
System.out.println(user);
}
//6.釋放資源
session.close();
in.close();
}
}
注意事項:不要忘記在映射配置中告知mybatis要封裝到哪個實體類中。
配置的方式:指定實體類的全限定類名。
入門案例分析: