zoukankan      html  css  js  c++  java
  • MyBatis 快速入门

    MyBatis介绍

    MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为MyBatis。

    MyBatis优缺点

    优点:简单、灵活、高效

    缺点:移植性差

    开发环境搭建

    1、下载需要的MyBatis jar包

    2、部署MyBatis jar包

    3、编写MyBatis配置文件

    <?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>
            <typeAliases>
            <typeAlias alias="Emp" type="com.accp.entity.Emp"/>
            </typeAliases>
        <environments default="development">
            <environment id="development">
            <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
                <property name="username" value="scott"/>
                <property name="password" value="tiger"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/accp/uitl/EmpDaoMapper.xml"/>
        </mappers>
    </configuration>
    mybatis-config.xml

     4、创建持久化类和数据库接口 

     1 package com.accp.entity;
     2 
     3 import java.util.Date;
     4 
     5 
     6 public class Emp implements java.io.Serializable {
     7 
     8     // Fields
     9     
    10     private int empno;
    11     private String ename;
    12     private String job;
    13     private int mgr;
    14     private Date hiredate;
    15     private Double sal;
    16     private Double comm;
    17     private int deptno;
    18     // Constructors
    19     /** default constructor */
    20     public Emp() {
    21     }
    22     
    23     public Emp(int empno, String ename, String job, int mgr, Date hiredate,
    24             Double sal, Double comm, int deptno) {
    25         super();
    26         this.empno = empno;
    27         this.ename = ename;
    28         this.job = job;
    29         this.mgr = mgr;
    30         this.hiredate = hiredate;
    31         this.sal = sal;
    32         this.comm = comm;
    33         this.deptno = deptno;
    34     }
    35 
    36     public int getEmpno() {
    37         return empno;
    38     }
    39     public void setEmpno(int empno) {
    40         this.empno = empno;
    41     }
    42     public String getEname() {
    43         return ename;
    44     }
    45     public void setEname(String ename) {
    46         this.ename = ename;
    47     }
    48     public String getJob() {
    49         return job;
    50     }
    51     public void setJob(String job) {
    52         this.job = job;
    53     }
    54     public int getMgr() {
    55         return mgr;
    56     }
    57     public void setMgr(int mgr) {
    58         this.mgr = mgr;
    59     }
    60     public Date getHiredate() {
    61         return hiredate;
    62     }
    63     public void setHiredate(Date hiredate) {
    64         this.hiredate = hiredate;
    65     }
    66     public Double getSal() {
    67         return sal;
    68     }
    69     public void setSal(Double sal) {
    70         this.sal = sal;
    71     }
    72     public Double getComm() {
    73         return comm;
    74     }
    75     public void setComm(Double comm) {
    76         this.comm = comm;
    77     }
    78     public int getDeptno() {
    79         return deptno;
    80     }
    81     public void setDeptno(int deptno) {
    82         this.deptno = deptno;
    83     }
    84 
    85 
    86 
    87 
    88 }
    Emp持久化类
    1 package com.accp.dao;
    2 
    3 import com.accp.entity.Emp;
    4 
    5 public interface IEmpDao {
    6     public void insertEmp(Emp emp);
    7     public void updateEmp(Emp emp);
    8 }
    数据库接口

    5、创建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="com.accp.dao.IEmpDao">
        <insert id="insertEmp" parameterType="Emp" >
            INSERT INTO emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)VALUES(#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{deptno})
        </insert>
        <update id="updateEmp" parameterType="Emp">
            UPDATE emp SET ename=#{ename},job=#{job},mgr=#{mgr},sal=#{sal} WHERE empno=#{empno}
        </update>
    </mapper>
    EmpDaoMapper.xml

    6、创建书库接口和实现类

     1 package com.accp.daoImpl;
     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.accp.dao.IEmpDao;
    12 import com.accp.entity.Emp;
    13 /**
    14  * @author 孙洪雨
    15  */
    16 public class IEmpDaoImpl implements IEmpDao {
    17     SqlSession session=null;
    18     SqlSessionFactory sf=null;
    19     Reader reader=null;
    20     @Override
    21     public void insertEmp(Emp emp) {
    22             try {
    23                 String resource="mybatis-config.xml";
    24                 reader=Resources.getResourceAsReader(resource);
    25                 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
    26                 sf=builder.build(reader);
    27                 session=sf.openSession();
    28                 IEmpDao dao=session.getMapper(IEmpDao.class);
    29                 dao.insertEmp(emp);
    30                 session.commit();
    31             } catch (IOException e) {
    32                 // TODO Auto-generated catch block
    33                 e.printStackTrace();
    34             }finally{
    35                 if(session!=null){
    36                     session.close();
    37                 }
    38             }
    39         
    40     }
    41     @Override
    42     public void updateEmp(Emp emp) {
    43         try {
    44             String resource="mybatis-config.xml";
    45             reader=Resources.getResourceAsReader(resource);
    46             SqlSessionFactoryBuilder bulder=new SqlSessionFactoryBuilder();
    47             sf=bulder.build(reader);
    48             session=sf.openSession();
    49             IEmpDao dao=session.getMapper(IEmpDao.class);
    50             dao.updateEmp(emp);
    51             session.commit();
    52         } catch (IOException e) {
    53             // TODO Auto-generated catch block
    54             e.printStackTrace();
    55         }finally{
    56             if(session!=null){
    57                 session.close();
    58             }
    59         }
    60     }
    61 
    62 }
    IEmpDaoImpl

    7、编写测试类进行测试

    使用MyBatis实现数据表的查询

    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.accp.dao.IEmpDao">
    
    <select id="findEmpByEmpNo" parameterType="int" resultType="com.accp.entity.Emp" >
        SELECT empno,ename,job,mgr,hiredate,sal,comm from Emp where  empno= #{empno}
    </select>
    </mapper>
    select元素

    select元素有如下设置:

    1.使用selectOne方法

     1 package com.accp.daoImpl;
     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.accp.dao.IEmpDao;
    12 import com.accp.entity.Emp;
    13 
    14 public class IEmpDaoImpl implements IEmpDao {
    15     SqlSessionFactory sf=null;
    16     SqlSession session=null;
    17     Reader reader=null;
    18     @Override
    19     public Emp findEmpByEmpNo(int empno) {
    20         String resource="mybatis-config.xml";
    21         Emp emp=null;
    22         try {
    23             reader=Resources.getResourceAsReader(resource);
    24             SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
    25             sf=builder.build(reader);
    26             session=sf.openSession();
    27             emp=session.selectOne("com.accp.dao.IEmpDao.findEmpByEmpNo", empno);
    28         } catch (IOException e) {
    29             // TODO Auto-generated catch block
    30             e.printStackTrace();
    31         }
    32         return emp;
    33     }
    34 
    35 }
    selectOne()

    2.session.getMapper()方法实现

     1 package com.accp.daoImpl;
     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.accp.dao.IEmpDao;
    12 import com.accp.entity.Emp;
    13 
    14 public class IEmpDaoImpl implements IEmpDao {
    15     SqlSessionFactory sf=null;
    16     SqlSession session=null;
    17     Reader reader=null;
    18     @Override
    19     public Emp findEmpByEmpNo(int empno) {
    20         String resource="mybatis-config.xml";
    21         Emp emp=null;
    22         try {
    23             reader=Resources.getResourceAsReader(resource);
    24             SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
    25             sf=builder.build(reader);
    26             session=sf.openSession();
    27             IEmpDao dao=session.getMapper(IEmpDao.class);
    28             emp=dao.findEmpByEmpNo(empno);
    29         } catch (IOException e) {
    30             // TODO Auto-generated catch block
    31             e.printStackTrace();
    32         }
    33         return emp;
    34     }
    35 
    36 }
    getMapper()

     使用MyBatis实现结果映射

    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.accp.dao.IEmpDao">
    
    <resultMap type="com.accp.entity.Emp" id="ResultMap">
        <id property="empno" column="empno"/>
        <result property="ename" column="ename"/>
        <result property="job" column="job"/>
        <result property="mgr" column="mgr"/>
        <result property="hiredate" column="hiredate"/>
        <result property="sal" column="sal"/>
        <result property="comm" column="comm"/>
    </resultMap>
    <select id="empResultMap" resultMap="ResultMap">
        select * from EMP 
    </select>
    </mapper>
    ResultMap

      使用MyBatis实现数据表增删改操作

    MyBatis的官方网站是https://code.google.com/p/mybatis/

  • 相关阅读:
    Oracle merge
    ORA-1461 encountered when generating server alert SMG-3500
    COALESCE NVL NVL2 DECODE
    oracle限制ip訪問
    java动态代理实现与原理详细分析
    MySql/Oracle树形结构查询
    微信公众号Java接入demo
    支付宝转账
    支付宝 查看订单 退款
    linux网络编程--UNIX域套接字
  • 原文地址:https://www.cnblogs.com/sunhongyu/p/3663145.html
Copyright © 2011-2022 走看看