Springboot数据访问(整合MyBatis)

文章目录

  • Springboot数据访问(整合MyBatis)
    • 1、Springboot基于配置使用MyBatis
    • 2、Springboot基于注解使用MyBatis

Springboot数据访问(整合MyBatis)

首先,我们肯定要引入我们的依赖(场景):


<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>2.2.0version>
dependency>

mybatis场景帮我们把所有东西都配置好了。详细可以自己去查看他的源码,这里直接说用法。
1、完全基于配置使用MyBatis
2、完全基于注解使用MyBatis
3、混合基于配置和注解两种方式使用MyBatis(就是有些接口用注解的方式写,有些接口用配置文件的方式写)

顺便直接说下我们的最佳实战:
1、引入mybatis-starter
2、配置application.yaml,指定mapper-location位置
3、编写Mapper接口并标注@Mapper注解
4、简单方法直接用基于注解的方式
5、复杂方法编写mapper.xml进行绑定映射。

对于步骤3,给每个接口标注@Mapper注解的情况,我们也可以选择在主程序文件上通过添加注解@MapperScan扫描对应的所有存放Mapper接口的包。如此,便不再需要给每个接口加@Mapper注解了。

@MapperScan("com.example.boot.mapper")
@SpringBootApplication
public class SpringBootMysqlApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMysqlApplication.class,args);
    }
}

下面,就两种方式说一下Springboot怎么使用MyBatis。

1、Springboot基于配置使用MyBatis

步骤:
1、导入MyBatis官方starter
2、编写mapper接口,添加@Mapper注解
3、编写sql映射文件并绑定mapper接口
4、在application.yaml中指定Mapper配置文件的位置

首先,我们写一个Student类:

package com.example.boot;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Integer id;
    private String name;
    private String email;
    private Integer age;

}

然后写我们的mapper映射:
StudetMapper.xml


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.boot.mapper.StudentMapper">
    <select id="findAll" resultType="com.example.boot.bean.Student">
        select id,name,email,age from Student order by id
    select>
mapper>

然后在yaml中配置mybatis的配置文件路径和mapper映射的路径。

mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml

之后写我们的StudentMapper接口:

package com.example.boot.mapper;

import com.example.boot.bean.Student;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface StudentMapper {
    public List<Student> findAll();
}

再写我们的sql实现:


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.boot.mapper.StudentMapper">
    <select id="findAll" resultType="com.example.boot.bean.Student">
        select id,name,email,age from Student order by id
    select>
mapper>

然后写我们的StudentService类进行实现。

package com.example.boot.service;

import com.example.boot.bean.Student;
import com.example.boot.mapper.StudentMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class StudentService {

    @Resource
    StudentMapper studentMapper;

    public List<Student> getAll(){
        return studentMapper.findAll();
    }
}

最后写我们的控制器方法:

package com.example.boot.controller;

import com.example.boot.bean.Student;
import com.example.boot.service.StudentService;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class JdbcController {
    @Resource
    StudentService studentService;

    @GetMapping("/getAll")
    public List<Student> getAll(){
        return studentService.getAll();
    }
}

运行:
Springboot数据访问(整合MyBatis)_第1张图片
想了解更多关于MyBatis原生写法的(比如增删改查、动态sql)可以看我的这几篇博客进行学习。(貌似只写了增加和查询的。。。。)
1、MyBatis框架快速入门
2、MyBatis动态SQL

2、Springboot基于注解使用MyBatis

为了排除刚才的影响,我们把刚才在全局配置文件配置的注释掉。

#mybatis:
#  mapper-locations: classpath:mybatis/mapper/*.xml

然后按照步骤从头开始讲:
1、导入starter。


<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>2.2.0version>
dependency>

2、写我们的bean。

package com.example.boot.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Integer id;
    private String name;
    private String email;
    private Integer age;

}

3、写mapper接口:(这里我们用@Select注解,直接把sql语句放进去了)
如果我们写的是插入语句,那么就用@Insert注解,删除语句,就用@Delete注解,修改就用@Update注解。可以理解成在mapper.xml文件中的对应的