Mybatis配置文件和实体类的映射文件,以及dao层的书写

mybatis-config.xml,配置文件,用于连接数据库。底层使用的是oracle数据库的emp表

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <configuration>
 5   <environments default="yy">//此处default值可以任意写
 6       <environment id="yy">//id值也可以任意写
 7          <transactionManager type="JDBC"></transactionManager>//事务管理器
 8          <dataSource type="POOLED">//数据源
 9           <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>//连接数据库的驱动
10        
11           <property name="url" value="jdbc:oracle:thin:@172.16.17.158:1521:orcl"/>//连接到哪一个数据库
12           <property name="username" value="scott"/>//数据库名
13           <property name="password" value="tiger"/>//数据库密码
14          </dataSource>
15       </environment>
16   </environments>
17   <mappers>
18   <mapper   resource="com/yh/mb/dao/EmpDao-mapper.xml"/>
19   </mappers>
20 </configuration>

数据源类型有三种: UNPOOLED , POOLED , JNDI 。

UNPOOLED - 这个数据源实现只是在每次请求的时候简单的打开和关闭一个连接。虽然这有点慢,但作为一些不需要性能和立即响应的简单应用来说 , 不失为一种好选择 。

POOLED - 这个数据源缓存 JDBC 连接对象用于避免每次都要连接和生成连接实例而需要的验证时间 。对于并发 WEB 应用,这种方式非常流行因为它有最快的响应时间。

JNDI - 这个数据源实现是为了准备和 Spring 或应用服务一起使用,可以在外部也可以在内部配置这个数据源,然后在 JNDI 上下文中引用它。这个数据源配置只需要两上属性:

Emp.java实体类

package com.yh.mb.entity;

import java.io.Serializable;
import java.util.Date;

public class Emp implements Serializable {
    //员工姓名
    private String empName;
    //员工编号
    private Integer empNo;
    //员工入职时间
    private Date hireDate;    
    //员工职位
    private String job;
    //员工工资
    private Double salary;
    //经理编号
    private Integer mgr;
    //奖金
    private Double comm;
    //部门编号
    private Integer deptNo;
    
    
    public Emp() {
        super();
    }
    public Emp(String empName, Double salary) {
        super();
        this.empName = empName;
        this.salary = salary;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public Integer getEmpNo() {
        return empNo;
    }
    public void setEmpNo(Integer empNo) {
        this.empNo = empNo;
    }
    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;
    }
    

}

实体类的映射文件EmpDao-mapper.xml。用于书写sql语句

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4 <mapper namespace="com.yh.mb.dao.EmpDao">
 5 <select id="empCout"  resultType="int">
 6 select count(1) from emp
 8 </select>
10 </mapper>

dao层的接口IEmpDao.java

1 package com.yh.mb.dao;
2 
3 public interface IEmpDao {
4  public int empCount();
5 }

dao层的实现类EmpDao.java

 1 package com.yh.mb.dao.impl;
 2 
 3 import java.io.IOException;
 4 import java.io.Reader;
 5 
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11 import com.yh.mb.dao.IEmpDao;
12 
13 public class EmpDao implements IEmpDao {
14 
15     public int empCount() {
16         SqlSessionFactory sqlsf=null;
17         SqlSession sqlsession=null;
18         Reader reader=null;//配置文件字符输入流
19         int count=0;
20         try {
21             reader=Resources.getResourceAsReader("mybatis-config.xml");
22             sqlsf=new SqlSessionFactoryBuilder().build(reader);
23             sqlsession=sqlsf.openSession();
24             count=sqlsession.selectOne("com.yh.mb.dao.EmpDao.empCout");
25         } catch (IOException e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }finally{
29             if(sqlsession!=null){
30                 sqlsession.close();
31             }
32                 
33         }            
34         return count;
35     }
36     public static void main(String[] args) {
37         EmpDao empDao=new EmpDao();
38         System.out.println(empDao.empCount());
39     }
40 
41 }

 

原文地址:https://www.cnblogs.com/jimorulang/p/5555962.html