mybits入門案例


1:mybatis的概述

mybatis是一個持久層框架,用java編寫的。
它封裝了jdbc操作的很多細節,使開發者只需要關注sql語句本身,而無需關注注冊驅動,創建連接等繁雜過程
它使用了ORM思想實現了結果集的封裝。

 

2:mybits入門案例:使用mybits進行最簡單的查詢(sql:select * from user)

mybatis的環境搭建(使用xml方式)
第一步:創建maven工程並導入坐標
第二步:創建實體類和dao的接口
第三步:創建Mybatis的主配置文件SqlMapConifg.xml
第四步:創建映射配置文件IUserDao.xml

 

環境搭建的注意事項:
第一個:創建IUserDao.xml 和 IUserDao.java時名稱是為了和我們之前的知識保持一致。
在Mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一樣的
第二個:在idea中創建目錄的時候,它和包是不一樣的
包在創建時:com.itheima.dao它是三級結構
目錄在創建時:com.itheima.dao是一級目錄
第三個:mybatis的映射配置文件位置必須和dao接口的包結構相同
第四個:映射配置文件的mapper標簽namespace屬性的取值必須是dao接口的全限定類名
第五個:映射配置文件的操作配置(select),id屬性的取值必須是dao接口的方法名

當我們遵從了第三,四,五點之后,我們在開發中就無須再寫dao的實現類。

pom.xml

<?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>cn.edu.hznu</groupId>
    <artifactId>mybatis01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <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.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>

    </dependencies>

</project>

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.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="199945"/>
            </dataSource>
        </environment>
    </environments>
<!--    映射配置文件-->
    <mappers>
        <mapper resource="cn/edu/hznu/dao/IUserDao.xml"/>
    </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="cn.edu.hznu.dao.IUserDao">
<!--    配置查詢索引-->
    <select id="findAll" resultType="cn.edu.hznu.domain.User">
        select * from user
    </select>
</mapper>

IUserDao.xml

package cn.edu.hznu.dao;

import cn.edu.hznu.domain.User;

import java.util.List;

/**
 * Created by wjj on 2020/3/28
 *
 * 用戶的持久層忌口
 */
public interface IUserDao {
    /*
     * 查詢所有用戶操作
     * */
    List<User>findAll();
}

mybatisTest

package cn.edu.hznu.test;

import cn.edu.hznu.dao.IUserDao;
import cn.edu.hznu.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.annotation.Resource;
import java.io.InputStream;
import java.util.List;

/**
 * Created by wjj on 2020/3/28
 */
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 sqlSession=factory.openSession();
        //4.使用對象創建接口代理對象
        IUserDao userDao=sqlSession.getMapper(IUserDao.class);
        //5.使用代理對象執行操作
        List<User>users=userDao.findAll();
        for (User user:users){
            System.out.println(user);
        }
        //6、釋放資源
        sqlSession.close();
        in.close();
    }
}

項目目錄結構

 

 

 

前三步都是為了sqlsession對象,因為sqlsession對象直接操作數據庫,分三步,並采用不同的設計模式,是為了解耦合,並且提高靈活性

第四步獲得seesion對象后,通過接口類名獲得對應的Mapper對象,mapper對象中有sql語句以及查詢的類,使用代理模式,對該接口使用代理,后續操作主需要對代理對象進行訪問,使用代理可以增強已有方法(理解為代理者是結構的下層,可以實現被代理者的方法並進行修改)

第五步第六步執行方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM