Mybatis框架学习总结--1如何搭建

第一次学习使用Mybatis框架进行开发,希望将自己的学习心得记录下来,同大家分享。

使用Mybatis做开发的流程:
1. 下载Mybatis.jar包
2. 部署jat包
3. 编写Mybatis配置文件
4. 创建实体类和数据库接口
5. 创建SQL映射文件
6. 创建数据库接口的实现类
7. 编写测试类进行测试

接下来通过实际的简单项目操作进行展示。
最后完成的小项目的目录夹如下图:
Mybatis框架学习总结--1如何搭建

第一步,下载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("------------------------------------");
    }
}   

展示台结果:
Mybatis框架学习总结--1如何搭建

楼主联系QQ:841400592。欢迎各位志同道合的朋友一起来讨论学习,如果觉得还行也欢迎转载。

猜你喜欢