欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 22:30:38
...

第一次学习使用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。欢迎各位志同道合的朋友一起来讨论学习,如果觉得还行也欢迎转载。