Spring和Mybatis整合全过程实现(idea实现)适合初学spring和mybatis

推荐大家使用jdk1.8版本,否则后边的项目中可能会有问题

1.通过idea进行一个maven工程的创建,然后在pom文件中加入项目的依赖和bulider插件,直接用就可以了,如果你的依赖包中有的包没有,可以点一下右上角有一个刷新的标志进行更新下载,更新完之后字体就不会报红,就可以用了,下面给出我的pom文件,其中比较重要的依赖有Spring和mybatis的依赖,mysql的依赖,还有一个阿里云的数据源的依赖




  4.0.0

  com.lin
  ch07-spring-mybatis
  1.0-SNAPSHOT

  
    UTF-8
    1.7
    1.7
  

  
    
      junit
      junit
      4.11
      test
    
    
      org.springframework
      spring-context
      5.2.5.RELEASE
    
    
    org.springframework
      spring-tx
      5.2.5.RELEASE
  
    
      org.springframework
      spring-jdbc
      5.2.5.RELEASE
  
    
      org.mybatis
      mybatis
      3.5.1
  
    
      org.mybatis
      mybatis-spring
      1.3.1
  
    
      mysql
      mysql-connector-java
      5.1.9
  
    
      com.alibaba
      druid
      1.1.12
  
  

  
    
    
      src/main/java
      
        
        **/*.properties
        **/*.xml
      
      false
    
    
    
      
        maven-compiler-plugin
        3.1
        
          1.8
          1.8
        
      
    
  

2.编写一个Student实体类,写好set,get方法,有参和无参的构造方法,重写toString方法

public class Student {
    private int id;
    private String name;
    private String sex;

    public Student() {
    }

    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }

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

3.定义一个dao的接口,写这个接口就是方便以后如果业务进行修改的时候不会将原来的义务功能丢失,类似于一个电脑的内存条或者独立显卡,当你需要更换一个的时候,因为有一个可插拔的接口,可以将原来的拔下来进行替换,我在接口中定义的方法是插入和查询数据,因为插入和查询的数据都是对象,所以返回的结果存放在一个列表中,我们拿到之后只要进行遍历就行了。

public interface StudentDao {
    int insertStudent(Student student);
    List selectStudent();
}

4.配置这个dao接口的配置文件,也就是我们所说的mapper映射文件,实际上,每一个dao接口都会对应一张表,也会对应一个xml文件,真正的sql语句就是写在这里边的,需要注意的是sql语句的id需要和dao接口中定义的方法名一致,其中返回值类型填实体类的所在路径




    
        insert into student values(#{id},#{name},#{sex})
    

    

5.接下来写的就是我们的业务接口,其实这个接口中的方法功能才是我们开始所描述的业务功能,在实际的开发中,一个业务功能会对应多个dao接口,就是我们说的多表查询,而在初学的时候,我们通常会用一张表来学习,所以可能service接口中定义的方法会和dao中定义的方法名相同,但实际开发中不是这样的,这一点要清楚。

另外还要明白的是一个调用关系service→dao→数据库,实际上我们所要的业务功能是在service中实现的,但是如果不通过dao,直接进行一个业务功能的实现类的编写,我们的service功能就和数据的更新查询等功能过于耦合,假设你有一天想换用一个别的数据库查询语言,就很难修改,而通过dao,我们就不用对service中的代码进行修改,只需要将dao接口换下来,也就是进行了一个插拔的操作,修改一层的代码不影响其它层的代码,这样就实现了解耦合的目的。

public interface StudentService {
    int addStudent(Student student);
    List queryStudents();
}

6.是service实现类的编写,其中需要注意的是需要写一个dao的set方法,这样spring在进行对象的声明时会进行set注入进行赋值操作


public class StudentServiceImpl implements StudentService {

    private StudentDao studentDao;

    //使用set注入
    public void setStudentDao(StudentDao studentDao) {

        this.studentDao = studentDao;
    }

    @Override
    public int addStudent(Student student) {
        int num = studentDao.insertStudent(student);
        return num;
    }

    @Override
    public List queryStudents() {
        List students = studentDao.selectStudent();
        return students;
    }
}

7.是进行mybatis主配置文件的编写,其中只需要指明所有映射文件的位置就可以了,就是前面我们写的mapper文件,其他的交给spring统一管理





    
    
        
        
    

    
    
    
        
    

    
    
        
        
    

8.进行spring配置文件的编写,我们可以把spring看做一个容器,一个盛放对象的容器,我们项目中需要的所有对象,包括数据源对象都要交给spring,放在这个容器中统一进行管理,我们只要进行声明,在使用时只要通过这个对象的id就可以直接将这个对象拿来用,比较方便,还有我们之前需要创建dao代理对象时需要的SqlSessionFactory也要在这里声明,说明这个容器非常牛逼




    
    
    

    
        
        
        
    

    
    
        
        
        
        
    

    
    
        
        
        
        
    

    
        
    

9.最后编写一个测试类进行功能测试,其中虽然是service调用了addStudent的方法,但实际上是将任务交给了代理对象也就是dao来执行,因为add方法实际上是调用了dao接口中的insert方法的,这样就十分巧妙的完成了插入的任务,中间其实通过代理dao对象来完成的。

public class Test {
    @org.junit.Test
    public void serviceTestInsert(){
        String config = "applicationContext.xml";
        ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
        //获取容器中的dao对象
        StudentService service = (StudentService) ctx.getBean("studentService");

        Student student = new Student();
        student.setId(10);
        student.setName("马华");
        student.setSex("女");

        int num = service.addStudent(student);
        System.out.println("成功插入条数:" + num );
    }

}

下边给出工程的代码结构图

Spring和Mybatis整合全过程实现(idea实现)适合初学spring和mybatis_第1张图片

 

你可能感兴趣的:(spring,mybatis,java,spring,mybatis,java,数据库,maven)