• Mybatis在dao层中的开发使用


    传统的dao层开发方式

    步骤总结:

    1.编写UserMapper接口

    2.编写UserMapper实现类

    3.编写UserMapper.xml映射文件

    4.编写测试类

    正文详解(此处以emp表为例):

    1.编写EmpMapper接口

    package com.lagou.dao;
    
    import java.io.IOException;
    import java.util.List;
    
    public interface interfaceEmp {
    
        public List<Emp> selectAll() throws IOException;
    }

    2.编写EmpMapper实现类

    package com.lagou.dao;
    
    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 java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    public class EmpImpl implements interfaceEmp {
    
        @Override
        public List<Emp> selectAll() throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = build.openSession();
    
            List<Emp> emps = sqlSession.selectList("EmpMapper.select");
    
            return emps;
        }
    }

    3.编写EmpMapper.xml映射文件

    <?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="EmpMapper">
    
        <!--编写相关的SQL语句:查询emp表中所有数据-->
        <select id="select" resultType="com.lagou.dao.Emp">
            select * from emp
        </select>
    
    </mapper>

    4.编写测试类

    package com.lagou.Test;
    
    import com.lagou.dao.Emp;
    import com.lagou.dao.EmpImpl;import org.junit.Test;
    
    import java.io.IOException;import java.util.List;
    
    public class EmpTest {/**
         * 调用方法实现测试
         * @throws IOException
         */
        @Test
        public void test() throws IOException {
    
            EmpImpl emp = new EmpImpl();
            List<Emp> emps = emp.selectAll();
            for (Emp emp1 : emps) {
                System.out.println(emp1);
            }
        }
    }

    详解:

    传统的开发方式中,需要编写UserMapper接口的实现类,并且实现类的内容大体相似,所以mybatis提供了接口的动态代理,此时只需要编写接口和Mapper.xml映射文件,不需要重复编写实现类。

    代理后的dao层开发方式

    开发步骤:

    1.编写UserMapper接口

    2.编写UserMapper.xml映射文件

    3.编写测试类

    正文详解(此处以emp表为例):

    1.编写EmpMapper接口

    package com.lagou.dao;
    
    import java.io.IOException;
    import java.util.List;
    
    public interface interfaceEmp {
    
        public List<Emp> selectAll() throws IOException;
    }

    2.编写EmpMapper.xml映射文件

    <?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.lagou.dao.InterfaceEmp">

    <select id="selectAll" resultType="com.lagou.dao.Emp">
    select * from emp
    </select>

    </mapper>

    备注:EmpMapper.xml配置文件和EmpMapper接口要保持同包同名(resoures资源目录下的路径)

    3.编写测试类

    package com.lagou.Test;
    
    import com.lagou.dao.Emp;
    import com.lagou.dao.EmpImpl;
    import com.lagou.dao.InterfaceEmp;
    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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Date;
    import java.util.List;
    
    public class EmpTest {
    
        /**
         * 代理方式后,查询所有emp表中所有数据
         */
        @Test
        public void test1() throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = build.openSession();
    
            InterfaceEmp mapper = sqlSession.getMapper(InterfaceEmp.class); //注意,这里是获取getMapper()方法,参数是 接口名.class,也就是表示该接口的实现类
            List<Emp> emps = mapper.selectAll();
            for (Emp emp : emps) {
                System.out.println(emp);
            }
    
            sqlSession.close();
    
        }
    }

    备注:当修改映射文件和接口文件同包同名后,注意SqlMapConfig.xml文件中的加载映射配置

    知识点总结:

    当采用代理方式在dao层使用mybatis时,编写步骤分为以下几步:

    1.编写XxxMapper接口;

    2.编写XxxMapper.xml配置文件(注意与接口保持同包同名);

    3.编写测试代码;

    备注:接口和配置文件在编写的过程中,必须保持如下图的对应关系

    1.Mapper.xml映射文件中的namespacemapper接口的全限定名相同
    2.Mapper接口方法名和Mapper.xml映射文件中定义的每个statementid相同
    3.Mapper接口方法的输入参数类型和mapper.xml映射文件中定义的每个sqlparameterType的类型相同
    4.Mapper接口方法的输出参数类型和mapper.xml映射文件中定义的每个sqlresultType的类型相同

  • 相关阅读:
    Mybatis+Spring整合
    java 线程详解
    java 异常处理
    java 日期 时间操作
    RandomAccessFile 详解
    js导入excel
    java 常见异常
    常用的java程序片段(算法)
    IO流详解
    json 详解
  • 原文地址:https://www.cnblogs.com/aloneme/p/14317364.html
Copyright © 2020-2023  润新知