Mybatis(三)动态代理方式实现增删改查

  在上一篇文章中,我们使用静态代理的方式,通过一个类来实现DAO接口从而实现增删改查;在这篇文章中,将使用动态代理的方式进行功能的实现,其原理是Java的反射机制。话不多说,先上代码为敬。

  1. 更改TestMybatis文件如下:
package cn.krain;

import cn.krain.dao.StudentDao;
import cn.krain.domain.Student;
import cn.krain.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class TestMybatis {
   
    //查询功能,sqlSession执行完毕后都需要关闭
    @Test
    public void testSelectStudents(){
   
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        List<Student> students = dao.selectStudents();
        sqlSession.close();
        for (Student stu:students) {
   
            System.out.println(stu);
        }
    }

    //插入功能
    @Test
    public void testInsertStudent(){
   
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        Student student = new Student();
        student.setId(7);
        student.setName("花花2");
        student.setEmail("8654@qq.com");
        student.setAge(21);
        int n = dao.insertStudent(student);
        sqlSession.commit();
        sqlSession.close();
        System.out.println(n);
    }

    //更新功能
    @Test
    public void testUpdateStudent(){
   
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        Student student = new Student();
        student.setId(7);
        student.setAge(10);
        int n = dao.updateStudent(student);
        sqlSession.commit();
        sqlSession.close();
        System.out.println(n);
    }

    //删除功能
    @Test
    public void testDeleteStudent(){
   
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        Student student = new Student();
        student.setId(7);
        int n = dao.deleteStudent(student);
        sqlSession.commit();
        sqlSession.close();
        System.out.println(n);
    }
}

  在上篇文章 使用静态代理实现 的基础上,我只需要去掉实现接口的类,同时修改TestMybatis类;在TestMybatis类中,当每个方法获取DAO对象时,使用SqlSession对象中的getMapper(dao.class)方法即可。

全部评论

相关推荐

07-11 13:16
湖南工学院 Java
坚定的芭乐反对画饼_...:谁也不知道,毕竟现在的互联网和十年前已经完全不同了,谁都无法预测未来
点赞 评论 收藏
分享
牛客73617529...:无端端被你骂一句
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务