天天看点

Springboot数据访问(整合MyBatis)Springboot数据访问(整合MyBatis)

文章目录

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

Springboot数据访问(整合MyBatis)

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

<!--mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</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

<?xml version="1.0" encoding="UTF-8" ?>
<!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实现:

<?xml version="1.0" encoding="UTF-8" ?>
<!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)Springboot数据访问(整合MyBatis)

想了解更多关于MyBatis原生写法的(比如增删改查、动态sql)可以看我的这几篇博客进行学习。(貌似只写了增加和查询的。。。。)

1、MyBatis框架快速入门

2、MyBatis动态SQL

2、Springboot基于注解使用MyBatis

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

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

然后按照步骤从头开始讲:

1、导入starter。

<!--mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</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文件中的对应的<select>、<insert>、<update>、<delete>标签。

package com.example.boot.mapper;

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

import java.util.List;

@Mapper
public interface StudentMapper {
    @Select("select * from student order by id")
    public List<Student> findAll();
}
           

然后写我们的Service:

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.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)Springboot数据访问(整合MyBatis)