Mybatis學習第一天

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要封裝到哪個實體類中。
		配置的方式:指定實體類的全限定類名。

入門案例分析:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章