創建一個MyBatis程序感受和JDBC的不同

                 ## 利用mybatis程序檢索出數據庫中的數據

創建一個任何程序一般需要經過的4個步驟:1(搭建環境)2(倒入jar包) 3(寫代碼)4(測試),mybatis也不例外…

什麼是 MyBatis?
準備工作:
中文文檔-- https://mybatis.org/mybatis-3/zh/getting-started.html
GitHub-- https://github.com/search?q=mybatis
百度百科
MyBatis 是一款優秀的持久層框架,
它支持定製化 SQL、存儲過程以及高級映射。
MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
MyBatis 可以使用簡單的 XML 或註解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。
創建第一個mybatis程序
1.新建一個Maven項目
2.刪除src
3.在父工程的Pom.xml中倒入Maven依賴

<!--倒入依賴-->
    <!--倒入mysql驅動-->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--倒入mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
        <!--倒入測試單元junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

2創建一個子模塊---------(mybatis01)
(1)編寫mybatis的核心配置文件 —mybatis01下 src/main/resources目錄下創建mybatis-config.xml文件–>編寫mybatis核心配置文件

<!--configuration核心配置文件-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis>useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

(2)編寫mybatis工具類—獲取數據庫連接對象

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;
    static{//這個類一旦加載就執行此代碼
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    //獲得sqlSession
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

(3)實體類—和數據庫中數據對應的實體類

package com.xcc.dao.pojo;

public class Emp {
    private int id;
    private String ename;
    private int age;
    private String sex;
    private double sal;
    private String birthday;
    private String edate;

    @Override
    public String toString() {
        return "emp{" +
                "id=" + id +
                ", ename='" + ename + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", sal=" + sal +
                ", birthday='" + birthday + '\'' +
                ", edate='" + edate + '\'' +
                '}';
    }

    public Emp() {
    }

    public Emp(int id, String ename, int age, String sex, double sal, String birthday, String edate) {
        this.id = id;
        this.ename = ename;
        this.age = age;
        this.sex = sex;
        this.sal = sal;
        this.birthday = birthday;
        this.edate = edate;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public double getSal() {
        return sal;
    }

    public void setSal(double sal) {
        this.sal = sal;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getEdate() {
        return edate;
    }

    public void setEdate(String edate) {
        this.edate = edate;
    }
}

(4)接口

package com.xcc.dao;
import com.xcc.dao.pojo.*;
import java.util.List;

public interface EmpDao {
   public List<Emp> getEmpList();
}

(5)接口實現類有之前的EmpDaoImpl類變成了現在的EmpMapper.xml (新建一個與實體類名字相對應的xxxMapper.xml) 執行sql語句步驟變的很簡單,不用由手動寫JDBC連接數據庫的代碼,mybaits幫我們封裝好了

<?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.xcc.dao.EmpDao">
    <select id="getEmpList" resultType="com.xcc.dao.pojo.Emp">
        select * from txweb.t_emp;
    </select>
</mapper>

3.編寫測試代碼

package com.xcc.dao;

import com.xcc.dao.pojo.Emp;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import utils.MybatisUtils;

import java.util.List;

public class EmpDaoTest {

    @Test
    public void Test(){
        //獲得sqlSession對象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        //方式一:getMapper
        EmpDao mapper = sqlSession.getMapper(EmpDao.class);
        List<Emp> empList = mapper.getEmpList();
        for (Emp emp : empList) {
            System.out.println(emp);
        }
        //第二種方式
        //關閉數據庫連接
        sqlSession.close();

    }
}

4.常看到的錯誤 org.apache.ibatis.binding.BindingException: Type interface com.xcc.dao.EmpDao is not known to the MapperRegistry.
MapperRegistry: 這是mybatis的核心配置文件缺少

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