MyBatis的使用(一):簡介與基本使用

簡介

    MyBatis 是支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或註解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

配置與使用

  1. 引入相應的jar包 mybatis基本包,mysql驅動包,log4j日誌包
  2. 建立dao層,dao層需要一個接口文件和一個xml文件,接口文件的文件名要和xml文件名一模一樣
  3. 建立mybatis的配置文件
    a.配置數據源 詳情請看xml文件
    b.配置dao層的xml文件
  4. 在dao層寫接口,寫響應的sql調用的方法
  5. 測試sql語句

mybatis-config.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>

    <!--相關的設置-->
    <settings>
        <!--mybatis log4j的日誌 -->
        <setting name="logImpl" value="LOG4J" />
    </settings>

    <!--所有的數據源
        default指定默認的數據源 填入數據源的ID
    -->
    <environments default="mysqlDataSource">
        <!--單個數據源-->
        <environment id="mysqlDataSource">
            <!--事務類型  -->
            <transactionManager type="JDBC"></transactionManager>
            <!--數據連接池-->
            <dataSource type="POOLED">
                <!--數據源的4個配置 驅動,地址,用戶名,密碼-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/emp"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 註冊dao層 -->
    <mappers>
        <!--單個註冊dao分爲 源代碼註冊和資源文件(xml)註冊-->
        <mapper class="com.dao.IEmpDao"></mapper>
        <!--<mapper resource="com/dao/IEmpDao.xml"></mapper>-->
    </mappers>
</configuration>
public interface IEmpDao {
    /*查詢所有的Emp*/
    public List<Emp>  findAllEmp();

    //根據ID查詢人員
    public Emp findByID(int empno);
}

IEmpDao.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">
<!-- 指定當前配置文件的接口文件 namespace來指定 全路徑-->
<mapper namespace="com.igeek.dao.IEmpDao">

    <!--指定我的sql語句
        id 代碼接口中方法名
        resultType 返回值的類型(泛型)
        parameterType  參數類型
    -->
    <select id="findAllEmp" resultType="com.entity.Emp">
        select  * from  emp
    </select>
    
    <select id="findByID" resultType="com.entity.Emp" parameterType="int">
        select  * from emp where empno = #{empno}
    </select>

</mapper>
public class MybatisUtil {
    public static SqlSession getSession(){
        //1.加載mybatis的配置文件
        //mybatis提供了讀取配置文件輸入流的工具類
        InputStream is = null;
        try {
            is = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //2.SqlSessionFactory mybatis的工廠類
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //3.SqlSession mybatis查詢組件(類似於原本JDBC連接)
        SqlSession sqlSession =factory.openSession();
        return sqlSession;
    }
}
public class TestMybatis {
    @Test
    public void test1() throws IOException {
        //1.加載mybatis的配置文件
        //mybatis提供了讀取配置文件輸入流的工具類
        //InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //2.SqlSessionFactory mybatis的工廠類
        //SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //3.SqlSession mybatis查詢組件(類似於原本JDBC連接)
        //SqlSession sqlSession =factory.openSession();
        //4.sqlSession動態生成dao層接口的實現類
        //  a.接口和xml文件一定要同名
        //  b.接口和xml文件一定要放在同一層目錄
        //  c.一定要在mybatis的配置文件中註冊這個dao

        //通過工具類得到sqlSession
        SqlSession sqlSession = MybatisUtil.getSession();
        //5.得到實現類
        IEmpDao dao = sqlSession.getMapper(IEmpDao.class);
        List<Emp> emps = dao.findAllEmp();
        System.out.println(emps);
        IEmpDao dao = sqlSession.getMapper(IEmpDao.class);
        Emp emp = dao.findByID(7654);
        System.out.println(emp);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章