首页 > 其他分享 >第三章:MyBatis框架Dao代理-动态代理简化代码

第三章:MyBatis框架Dao代理-动态代理简化代码

时间:2022-11-06 21:34:40浏览次数:38  
标签:getMapper Dao StudentDao dao 代理 MyBatis import

第三章:MyBatis 框架 Dao 代理

内容列表

Dao 接口动态代理

参数传递

处理查询结果

like 和主键

1 Dao 代理实现 CURD

1.1去掉Dao接口的实现类

1.2getMapper 获取代理对象(重点)

只需调用 SqlSession 的 getMapper()方法,即可获取指定接口的实现类对象。该方法的参数为指定 Dao接口类的 class 值。

SqlSession session = factory.openSession();
StudentDao dao = session.getMapper(StudentDao.class);

使用工具类:

StudentDao studentDao= MyBatisUtil.getSqlSession().getMapper(StudentDao.class);

3.3 使用 Dao 代理对象方法执行 sql 语句

package com.bjpowernode;

import com.bjpowernode.dao.StudentDao;
import com.bjpowernode.domain.Student;
import com.bjpowernode.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;

import java.util.List;

public class TestMyBatis {

    @Test
    public void testSelectStudents(){
        /**
         * 使用mybatis的动态代理机制, 使用SqlSession.getMapper(dao接口)
         * getMapper能获取dao接口对于的实现类对象。
         */
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao  =  sqlSession.getMapper(StudentDao.class);

        //com.sun.proxy.$Proxy2 : jdk的动态代理
        System.out.println("dao="+dao.getClass().getName());

        //调用dao的方法, 执行数据库的操作
        List<Student> students = dao.selectStudents();
        for(Student stu: students){
            System.out.println("学生="+stu);
        }
    }

    @Test
    public void testInsertStudent(){
        SqlSession sqlSession  = MyBatisUtils.getSqlSession();
        StudentDao dao  =  sqlSession.getMapper(StudentDao.class);

        Student student = new Student();
        student.setId(1007);
        student.setName("lifei");
        student.setEmail("[email protected]");
        student.setAge(28);
        int nums = dao.insertStudent(student);
        sqlSession.commit();
        System.out.println("添加对象的数量:"+nums);
    }

}

3.4 测试如下:

执行查询

执行插入:

2. 原理

动态代理

标签:getMapper,Dao,StudentDao,dao,代理,MyBatis,import
From: https://www.cnblogs.com/atao-BigData/p/16864161.html

相关文章

  • MyBatisPlus快速入门
    MyBatisPlus快速入门需要的基础:MyBatisSpringSpringMVC是什么?MyBatis本来就是简化JDBC操作的!官网:https://mp.baomidou.com/MyBatisPlus,简化MyBatis......
  • 设计模式---代理模式
    简述对客户端隐藏目标类,创建代理类拓展目标类,并且对于客户端隐藏功能拓展的细节,使得客户端可以像使用目标类一样使用代理类,面向代理(客户端只与代理类交互)。话不多说,看......
  • ubuntu20配nginx代理yum源,内网不能上网
    1、yum-server#yum-server外网IP1.1.1.1root@yum-ser:/etc/nginx/sites-available#catdefaultserver{listen80default_server;server_name1.1.1.......
  • mall学习教程笔记--Mybatis generator和Swagger
    github学习项目--mall学习教程https://www.macrozheng.com/mall/catalog/mall_catalog.htmlMybatisgenerator配置文件介绍MyBatis的代码生成器,可以根据数据库生成mode......
  • Hikvison对接NVR实现WEB无插件开发包实现前端视频预览(html、vue、nginx代理)
    场景Vue中预览HIKVSION海康威视的NVR(网络硬盘录像机)中多个通道(摄像机)的视频:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124155295在上面进行NVR视......
  • Srping AOP的学习(二):java代理
    1.代理的介绍说的java的代理,就离不开java的代理模式。而java的代理模式就是通过引入一个代理对象来代替我们的实际对象进行操作,这样就可以在不修改原目标对象的前提下,提供......
  • centos下搭建sockets5代理
    #安装依赖及ss5yum-yinstallgccopenldap-develpam-developenssl-develwgethttps://nchc.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gztar-x......
  • Nginx 反向代理
    1、业务场景内网服务器无法通过外网访问到时,这时候需要一台跳板机来实现2、概念介绍Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IM......
  • MyBatis-日志功能,基本的CURD,MyBatis对象分析,创建工具类。
    MyBatis-日志功能,基本的CURD,MyBatis对象分析,创建工具类。1.配置日志功能mybatis.xml文件加入日志配置,可以在控制台输出执行的sql语句和参数<settings><settingna......
  • MyBatis框架快速入门-搭建环境,编写代码,测试。
    MyBatis框架快速入门1入门案例案例的结构如下:MyBatis开发准备搭建MyBatis开发环境,实现第一个案例2使用Mybatis准备下载mybatishttps://github.com/mybati......