MyBatis动态代理扫描的简单demo

本文旨在记录一个使用MyBatis动态代理扫描开发的基本例子

目录结构

在这里插入图片描述

这里使用idea作为开发环境

使用Navicat操纵的Mysql数据库

在这里插入图片描述

entity类

所谓的entity、bean、domain都是指的与数据库表对应的实体类,需要注意的是,这里的字段必须要和数据库中对应表的字段一一对应起来

package com.entity;

import org.springframework.stereotype.Component;

@Component(value = "stud")
public class student {
   
    private String name;
    private String sex;
    private String grade;

    @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
    public student(String name, String sex, String grade) {
   
        this.name = name;
        this.sex = sex;
        this.grade = grade;
    }
    public student() {
   

    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public String getSex() {
   
        return sex;
    }

    public void setSex(String sex) {
   
        this.sex = sex;
    }

    public String getGrade() {
   
        return grade;
    }

    public void setGrade(String grade) {
   
        this.grade = grade;
    }

    @Override
    public String toString() {
   
        return "student{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", grade='" + grade + '\'' +
                '}';
    }
}

Dao层

有了实体类以后,我们需要对实体进行数据操纵。
这里要注意的是,以StudentDao为例,网络中StudentMapper.java实际指的就是StudentDao.java,只是一个东西的两种叫法。
本文主要为了演示大概流程,为了简单,只写最基本的增删改查

package com.dao;

import com.entity.student;
import org.springframework.stereotype.Component;

@Component
public interface StudentDao {
   
    public int add(student stu);
    public int delete(String name);
    public int update(String grade);
    public int insert(String name);
}

Service层与对应的Impl层

在一些简单的SSM项目中,我们可能会发现一个现象,Service层与Dao层都是接口,甚至连代码都一模一样,那为什么要这样写呢,是为了形式化、为了使用接口而写接口吗,可以直接实现Dao层接口来调用具体的服务吗?
答案当然是否定的,严格来讲,这样做的目的是为了解耦,在业务逻辑简单,操作数据也很简单的时候,比如一个service只操作一个dao,这时service与dao的代码确实是一样的,但是当操作的数据十分繁杂时(在企业开发中基本都十分繁杂),一个服务会需要调用很多个dao来实现一个服务流程,而dao中只存放了对单个表的操作。service层做的事情,不仅仅是调用DAO操作数据,还会包含了一定的业务逻辑。
当我们在dao层进行技术选型时,我们可以直接采用Mybatis、Hibernate、JDBC等等直接进行替换,而无需修改service层的代码,对于dao层,应该只关注数据库连接执行结果封装这些事

这里为了演示流程,只实现了增加数据的方法

package com.service;

import com.entity.student
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值