zoukankan      html  css  js  c++  java
  • mybatis04--Mapper动态代理实现

    通过之前的操作,我们发现dao的实现类其实并没有做什么实质性的工作,仅仅是通过sqlSession的相关API定位到StudentMapper映射文件

    中的ID中的sql语句,其实真正操作DB的是mapper中的sql

    所以mybatis就抛开了dao层的实现类,可以直接定位到mapper中的sql!然后执行sql对DB进行操作!这种对dao的实现方式我们称为Mapper的动态代理方式!

    1.删除之前的StudentDaoImpl实现类

    2.修改StudentMapper文件中的namespace必须是StudentDao的完整限定名

    3.修改StudentMapper文件中所有的id必须和StudentDao接口中的方法名称完全一致

    4.修改测试类代码

    public class StudentTest {
        StudentDao dao;
        SqlSession session;
    
        @Before
        public void before() {
            // 因为需要关闭session 需要把session提取出去
            session = SessionUtil.getSession();
            dao = session.getMapper(StudentDao.class);
        }
        @After
        public void after() {
            if (session != null) {
                session.close();
            }
        }
        // 新增
        @Test
        public void test() {
            Student student = new Student("小黑333", 100);
            System.out.println("方法之前==" + student);
            dao.addStudent(student);
            System.out.println("方法之后==" + student);
            session.commit();
        }
    }

     之后的删除,修改,删除和查询也是同样的操作!

  • 相关阅读:
    .OBJ est1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
    线程详细剖析(四)
    线程详细剖析(三)
    线程详细剖析(二)
    线程详细剖析(一)
    CAN总线相关的几个gitlab代码
    进程详细剖析(三)
    C++实现多级排序
    C/C++读写二进制文件
    C++11新特性
  • 原文地址:https://www.cnblogs.com/999-/p/6275539.html
Copyright © 2011-2022 走看看