Mybatis框架學習總結--1如何搭建

第一次學習使用Mybatis框架進行開發,希望將自己的學習心得記錄下來,同大家分享。

使用Mybatis做開發的流程:
1. 下載Mybatis.jar包
2. 部署jat包
3. 編寫Mybatis配置文件
4. 創建實體類和數據庫接口
5. 創建SQL映射文件
6. 創建數據庫接口的實現類
7. 編寫測試類進行測試

接下來通過實際的簡單項目操作進行展示。
最後完成的小項目的目錄夾如下圖:
這裏寫圖片描述

第一步,下載Mybatis的jar包。我上傳在我的服務器上,地址是:點擊下載

第二步,新建eclipse項目,下載完的jar導入到項目中的lib文件夾中,右擊jar包–>build path–>add to build path

第三步,編寫Mybatis配置文件,即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>
    <!--簡化代碼,使用Emp代替com.entity.Emp類,在EmpDaoMapper的映射文件中,代碼將快捷乾淨很多 -->
    <typeAliases>
        <typeAlias alias="Emp" type="com.entity.Emp" />
    </typeAliases>

    <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/emp?characterEncoding=utf8" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

     <!-- 註冊EmpDaoMapper.xml文件,EmpDaoMapper.xml位於com.dao這個包下,所以resource寫成com/dao/EmpDaoMapper.xml-->
    <mappers>
        <mapper resource="com/dao/EmpDaoMapper.xml" />
    </mappers>
</configuration>

第四步,創建實體類和數據庫接口

1.數據庫創建新的數據庫,創建表emp,設置相關的字段並插入值

CREATE TABLE emp(
    empno       INT,
    ename       VARCHAR(50),
    job     VARCHAR(50),
    mgr     INT,
    hiredate    DATE,
    sal     DECIMAL(7,2),
    comm        DECIMAL(7,2),
    deptno      INT
) ;

INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

2.創建與數據表emp對應的實體類

package com.entity;

import java.util.Date;

public class Emp {
    private Integer empno;
    private String empName;
    private Date hireDate;
    private String job;
    private Double salary;
    private Integer mgr;
    private Double comm;
    private Integer deptNo;

    public Integer getEmpno() {
        return empno;
    }

    public void setEmpno(Integer empno) {
        this.empno = empno;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public Integer getMgr() {
        return mgr;
    }

    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }

    public Double getComm() {
        return comm;
    }

    public void setComm(Double comm) {
        this.comm = comm;
    }

    public Integer getDeptNo() {
        return deptNo;
    }

    public void setDeptNo(Integer deptNo) {
        this.deptNo = deptNo;
    }

}

3.創建數據庫接口

package com.dao;

import java.util.List;

import com.entity.Emp;

public interface IEmpDao {
    //創建全選數據庫的數據,返回值類型是以List儲存的Emp對象的集合
    public List<Emp> selectAll();
}

第五步,創建SQL映射文件

<?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,namespace的值習慣上設置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的 -->
<mapper namespace="com.dao.IEmpDao">
    <!-- 優化代碼映射管理,一次設置,下面可優化重複使用 -->
    <resultMap id="empResultMap" type="com.entity.Emp">
        <id property="empno" column="empno" />
        <result property="empName" column="ename" />
        <result property="hireDate" column="hiredate" />
        <result property="job" column="job" />
        <result property="salary" column="sal" />
        <!-- 別名儲存數據,數據庫取出的數據爲column欄目命名,根據部分在實體類中的命名進行對應 -->
        <result property="comm" column="comm" />
        <result property="mgr" column="mgr" />
        <result property="deptNo" column="deptno" />
    </resultMap>

    <!-- 在select標籤中編寫查詢的SQL語句, 設置select標籤的id屬性爲selectAll,id屬性值必須是唯一的,不能夠重複;使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型, resultType="empResultMap"就表示將查詢結果封裝成一個emp類的對象返回emp類就是emp表所對應的實體類 -->
    <select id="selectAll" resultType="Emp" resultMap="empResultMap">
        SELECT * FROM
        EMP
    </select>

</mapper>

第六步,創建數據庫接口的實現類

package impl;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

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 com.dao.IEmpDao;
import com.entity.Emp;

public class EmpDaoImpl implements IEmpDao {
    //繼承,實現具體操作
    @Override
    public List<Emp> selectAll() {
        //加載配置文件,創建session倉庫,可以在熟練掌握之後進行代碼的封裝,優化代碼,實現重用
        String resource = "mybatis-config.xml";
        Reader reader = null;
        SqlSessionFactory factory = null;
        SqlSession session = null;
        List<Emp> list = new ArrayList<Emp>();
        try {
            reader = Resources.getResourceAsReader(resource);
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            factory = builder.build(reader);
            session = factory.openSession();
            //執行操作,對應映射文件具體的id--selectAll
            //session.後的方法有selectOne,insert等,對應不同的數據操作,如果是對數據原本數據有影響的操作,需要之後加上session.commit();
            list = session.selectList("com.dao.IEmpDao.selectAll");
        } catch (IOException e1) {
            e1.printStackTrace();
        } finally {
            session.close();
        }
        return list;
    }
}

第七布,測試顯示類

package test;

import java.util.Date;
import java.util.List;

import com.dao.IEmpDao;
import com.entity.Emp;

import impl.EmpDaoImpl;

public class testMybatis {

    public static void main(String[] args) {

        IEmpDao empDao = new EmpDaoImpl();

        List<Emp> list = empDao.selectAll();
        System.out.println("全部的員工信息:");
        for (Emp em : list) {
            System.out.println("員工編號" + em.getEmpno() + "  員工姓名:" + em.getEmpName() + "  職位:" + em.getJob() + "部門:"+ em.getDeptNo());
        }
        System.out.println("------------------------------------");
    }
}   

展示臺結果:
這裏寫圖片描述

樓主聯繫QQ:841400592。歡迎各位志同道合的朋友一起來討論學習,如果覺得還行也歡迎轉載。

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