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

来源:互联网 发布:js object length 编辑:程序博客网 时间:2024/06/05 08:15

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

原创粉丝点击