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

运行:
在这里插入图片描述
想了解更多关于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();
    }
}

我们再编译一下,看我们的运行结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值