面试|SpringBoot 整合mybatis,mybatis-plus

前言 【面试|SpringBoot 整合mybatis,mybatis-plus】在真实的项目开发中,使用SpringBoot可以说非常普遍了,而在框架整合中,与数据库的交互无外乎使用jpa,mybatis,mybatis-plus这几种,虽然hibernate仍然有在使用,毕竟框架毕竟重,而且用起来相较于mybatis还是差了那么点意思;
接下来演示下使用SpringBoot 同时与mybatis,mybatis-plus的整合步骤;
准备工作 1、准备如下一个数据表

CREATE TABLE `student` ( `id` varchar(32) NOT NULL, `gender` varchar(32) DEFAULT NULL, `age` int(12) DEFAULT NULL, `nick_name` varchar(32) DEFAULT NULL, `name` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、插入几条测试数据
面试|SpringBoot 整合mybatis,mybatis-plus
文章图片

整合步骤 工程的完整包结构如图所示
面试|SpringBoot 整合mybatis,mybatis-plus
文章图片

1、导入maven依赖
org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASE UTF-8UTF-8 1.8 8.0.11 3.7 1.2.47 3.3.0 3.3.0 1.1.14 1.18.0 2.0.0 2.9.2 1.9.6 org.apache.commons commons-lang3 3.4 org.springframework.boot spring-boot-starter-web mysql mysql-connector-java ${mysql-connector-java.version} com.alibaba fastjson ${fastjson.version} com.alibaba druid-spring-boot-starter ${druid.version} org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1 com.baomidou mybatis-plus-boot-starter ${mybatis-plus-boot-starter.version} com.baomidou mybatis-plus-generator ${mybatis-plus-generator.version} org.projectlombok lombok ${lombok.version} io.springfox springfox-swagger2 ${swagger.version} io.springfox springfox-swagger-ui ${swagger.version} com.github.xiaoymin swagger-bootstrap-ui ${swagger-bootstrap-ui.version}

2、配置文件application.yml
server: port: 8083logging: config: classpath:logback-spring.xml#日志spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://IP:3306/school?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false username: root password: root druid: max-active: 100 initial-size: 10 max-wait: 60000 min-idle: 5#设置单个文件最大上传大小 servlet: multipart: max-file-size: 20MBmybatis-plus: mapper-locations: classpath*:mapper/*.xml global-config: db-column-underline: true#开启驼峰转换 db-config: id-type: uuid field-strategy: not_null refresh: true configuration: map-underscore-to-camel-case: true #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句便于调试

3、为了方便后面调试接口,增加一个swagger的配置
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * swagger文档,项目启动后,浏览器访问:http://localhost:8083/swagger-ui.html */ @Configuration @EnableSwagger2 public class ApiSwagger2 {@Bean public Docket createRestBmbsApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("users") .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.congge.controller")) .paths(PathSelectors.any()) .build(); }private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("后端相关API") .version("1.0") .build(); }}

4、实体类
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; @Data public class Student {@TableField("id") private String id; @TableField("name") private String name; @TableField("gender") private String gender; @TableField("age") private int age; @TableField("nick_name") private String nickName; }

5、dao接口,里面添加一个查询所有数据的方法
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.congge.entity.Student; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface StudentMapper extends BaseMapper {List queryAll(); }

6、mybatis层,写sql的文件
select * from student

7、业务实现类 在本次的业务实现中,同时可以使用mybatis的方式以及mybatis-plus的方式进行,具体使用的时候结合自身的需求进行选择;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.congge.dao.StudentMapper; import com.congge.entity.Student; import com.congge.service.StudentService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class StudentServiceImpl implements StudentService {@Resource private StudentMapper studentMapper; @Override public List queryAllStudent() { QueryWrapper queryWrapper = new QueryWrapper(); List students = studentMapper.selectList(queryWrapper); return students; //return studentMapper.queryAll(); }@Override public List getByName(String name) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.like("name",name); return studentMapper.selectList(queryWrapper); }public Student getById(String id) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.like("id",id); return studentMapper.selectOne(queryWrapper); } }

8、添加一个测试接口
@RestController public class StudentController {@Autowired private StudentService studentService; @GetMapping("/getAll") public List getAll(){ return studentService.queryAllStudent(); }@GetMapping("/getByName") public List getByName(@RequestParam String name){ return studentService.getByName(name); }@GetMapping("/getById") public Student getById(@RequestParam String id){ return studentService.getById(id); } }

9、启动类
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App {public static void main(String[] args) { SpringApplication.run(App.class,args); }}

接下来,将工程运行起来做一下测试吧
10、启动之后,打开swagger界面 面试|SpringBoot 整合mybatis,mybatis-plus
文章图片

面试|SpringBoot 整合mybatis,mybatis-plus
文章图片

不妨随机测试两个接口吧,测试下获取所有学生的数据接口
面试|SpringBoot 整合mybatis,mybatis-plus
文章图片

本篇到这里基本上就结束了,更多的业务大家可以结合自身的实际情况,继续在代码中补充即可
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

    推荐阅读