springboot中整合mybatis及简单使用

  • 1.引入依赖
  • 2.在applicaiton.yaml中配置数据源以及mybatis
  • 3.创建sql测试表
  • 4.编写mapper接口和mapper.xml文件
    • 4.1 mapper接口
    • 4.2 mapper.xml
    • 4.3 mybatisX快速开发插件
  • 5.创建service层和controller层
    • 5.1 创建service层
    • 5.2 创建controller层
  • 6.项目结构及运行测试
    • 6.1 项目结构
    • 6.2 运行测试
  • 7.小结

1.引入依赖

引入mybatis提供的stater,以及druid数据源和mysql驱动器和lombok依赖:

    <!--   mysql驱动     --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><!-- druid 数据源--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.17</version></dependency><!--  mybatis第三方stater  --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><!-- lombok插件依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

lombok插件:

 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>

2.在applicaiton.yaml中配置数据源以及mybatis

在application.yaml中配置数据源,以及mybatis:

# 数据源配置
spring:datasource:url: jdbc:mysql://localhost:3306/phpdemo?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver# mybatis整合
mybatis:#config-location: classpath:mybatis/mybatis-config.xml # 指定mybatis-config.xml全局配置文件的位置,可以不写mapper-locations: mapper/*  # 指定mapper.xml配置文件的位置configuration:map-underscore-to-camel-case: true  # 开启下划线转驼峰命名

通过 mybatis.mapper.locations来指定mapper.xml映射文件的位置,mybatis-config.xml可以不指定位置(也不创建)。

3.创建sql测试表

创建一个Book表:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (`id` int(0) NOT NULL AUTO_INCREMENT,`bookName` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,`bookPrice` decimal(10, 2) NOT NULL,`author` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, '平凡的世界', 59.00, '路遥');
INSERT INTO `book` VALUES (2, '三体', 99.00, '刘慈欣');
INSERT INTO `book` VALUES (3, '人间失格', 44.00, '太宰治');
INSERT INTO `book` VALUES (4, '白夜行', 38.00, '东野圭吾');SET FOREIGN_KEY_CHECKS = 1;

4.编写mapper接口和mapper.xml文件

4.1 mapper接口

在springboot中,使用@Mapper注解来标识一个接口为mapper接口,也可以通过在主启动程序上使用@MapperScan(“com.robin.boot.mapper”)的方式来扫描指定的包为mapper接口的包。

这里我使用第一种方式,通过@Mapper注解来标识接口:

package com.robin.boot.mapper;import com.robin.boot.bean.Book;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper  // 在springboot中通过 @Mapper注解来标识一个接口为mapper接口
public interface BookMapper {// 查询所有书籍public List<Book> queryAllBook();// 根据id查询单本书public Book findBookById(Long id);}

4.2 mapper.xml

在类资源路径下,创建对应的mapper.xml:


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.robin.boot.mapper.BookMapper"><!--  public List<Book> queryAllBook();  --><select id="queryAllBook" resultType="com.robin.boot.bean.Book">select * from phpdemo.book</select><!--   public Book findBookById(Long id);  --><select id="findBookById" resultType="com.robin.boot.bean.Book">select * from phpdemo.book where id = #{id}</select></mapper>

4.3 mybatisX快速开发插件

推荐安装一个mybatisX插件,这样可以方便的跳转mapper接口和对应的xml配置文件

如下图,当mapper.xml与mapper接口绑定时,会有小鸟图标显示,开发很方便观察

5.创建service层和controller层

5.1 创建service层

mvc三层架构的方式:service层包括sevice接口和对应实现类serviceImpl

service接口:

package com.robin.boot.service;import com.robin.boot.bean.Book;
import java.util.List;public interface BookService {// 查询所有书籍public List<Book> queryAllBook();// 根据id查询单本书public Book findBookById(Long id);}

serviceImgl实现类:

package com.robin.boot.service.impl;import com.robin.boot.bean.Book;
import com.robin.boot.mapper.BookMapper;
import com.robin.boot.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class BookServiceImpl implements BookService {@Autowired // 自动注入BookMapper bookMapper;@Overridepublic List<Book> queryAllBook() {return bookMapper.queryAllBook();}@Overridepublic Book findBookById(Long id) {return bookMapper.findBookById(id);}}

5.2 创建controller层

编写controller以及请求映射,这里为了方便,我就直接通过返回字符串json数据来响应请求,不去编写对应的html页面了

controller:

package com.robin.boot.controller;import com.robin.boot.bean.Book;
import com.robin.boot.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;@Controller
public class BookController {@AutowiredBookService bookService;@ResponseBody // 以json的格式返回数据@GetMapping("/allBook")public String queryAllBook(){// 调用service层来查询所有书籍数据List<Book> books = bookService.queryAllBook();// 为了演示,简单的将其返回字符串return books.toString();}@ResponseBody@GetMapping("/book/{id}")public String findBookById(@PathVariable("id") Long id){Book book = bookService.findBookById(id);return book.toString();}}

6.项目结构及运行测试

6.1 项目结构

6.2 运行测试

查询所有书籍 localhost:8080/allBook

查询单本书籍localhost:8080/book/id号

7.小结

在springboot中整合使用mybatis很方便,只要引入对应的stater,然后在application.yaml或者application.properties配置文件中进行配置即可(配置对应的mapper.xml的路径,还有很多配置,可以参考对应的官方文档),注意使用mapper接口时通过@Mapper注解标识,或者通过@MapperScan注解扫描对应的mapper包。


springboot中整合mybatis及简单使用相关推荐

  1. springboot项目整合mybatis

    SpringBoot项目整合mybatis 本章内容 使用 idea创建 SpringBoot项目 SpringBoot项目中配制 mybatis 框架 1 创建 SpringBoot项目 1.1 在 ...

  2. SpringBoot中关于Mybatis使用的三个问题

    SpringBoot中关于Mybatis使用的三个问题 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8495453.html 原本是要讲讲PostgreSQL ...

  3. 【SpringBoot】22、SpringBoot中整合knife4j接口文档

    在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护 接口文档使得项目开发过程中前后端工程师 ...

  4. springboot中的mybatis是如果使用pagehelper的

    springboot中的mybatis是如果使用pagehelper的 springboot中使用其他组件都是基于自动配置的AutoConfiguration配置累的,pagehelper插件也是一样 ...

  5. 【SpringBoot】43、SpringBoot中整合RabbitMQ实现延时队列(延时插件篇)

    死信队列实现篇,参考文章:[SpringBoot]60.SpringBoot中整合RabbitMQ实现延时队列(死信队列篇) 一.介绍 1.什么是延时队列? 延时队列即就是放置在该队列里面的消息是不需 ...

  6. 在SpringBoot中整合使用Netty框架提供WebSocket服务

    在SpringBoot中整合使用Netty框架 Netty是一个非常优秀的Socket框架.如果需要在SpringBoot开发的app中,提供Socket服务,那么Netty是不错的选择. Netty ...

  7. 【SpringBoot】27、SpringBoot中整合Ehcache实现热点数据缓存

    EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider.用惯了 Redis,很多人可能已经忘记了还有 EhCache ...

  8. SpringBoot中使用mybatis/ibatis日志打印sql

    SpringBoot中使用mybatis/ibatis时日志打印sql 控制台打印mybatis/ibatis对应的sql 主机的日志文件中打印mybatis/ibatis对应的sql 控制台打印my ...

  9. SPRINGBOOT中如何运用JPA,简单例子

    SPRINGBOOT中如何运用JPA,简单例子 步骤 1 : JPA概念顶折 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库. 真正干活 ...

最新文章

  1. form表单提交编码的问题
  2. SharePoint 2010 内容编辑器Web部件的使用方法
  3. Freemarker基于模板字符串生成静态化html文件
  4. [译] APT分析报告:09.伊朗APT34更新武器库——SideTwist变体
  5. 【Linux】一步一步学Linux——consoletype命令(247)
  6. 怎么画正五边形步骤_悄悄告诉你们:一种没有美术基础,也能画好画的方法
  7. 将shell命令结果直接输出到HDFS上
  8. 三、Eclipse快捷键
  9. Nginx安装手册(摘自入云龙老师教案,亲测可用)
  10. LeetCode 153 寻找旋转排序数组中的最小值
  11. Tensorflow并行计算:多核(multicore),多线程(multi-thread),计算图分割(Graph Partition)
  12. 基于windows使用fabric将gitlab的文件远程同步到服务器(本地)
  13. DTCC 2020 PDF(共77个)丨2020中国数据库技术大会文档分享
  14. redis设置密码和其它服务器连接
  15. 考研数学三考摆线吗_考研数学草稿纸发几张?可以多打几张准考证当草稿纸用吗?...
  16. 如何用Chrome自带的截屏功能截取超过一个屏幕的网页 1
  17. c语言系统主函数流程图,c语言流程图【调解方式】
  18. 手机的红外线功能有可能淘汰
  19. webrtc android 声音处理,WebRTC 安卓有视频无声音问题解决
  20. java 读取Excel数据(POI)(一个sheet或者多个sheet)

热门文章

  1. 洛谷P1150 Peter的烟(逻辑建模)
  2. WebRTC学习06----1对1视频通信实例
  3. 面向对象设计的3个基本特征和5个原则
  4. 解决:远程连接mysql:报异常,1044 - Access denied for user ‘root‘@‘%‘ to database ‘xxxxxx‘
  5. Docker容器启动参数大全与详细说明
  6. 计算机毕业设计开题报告基于SpringBoot的校淘二手网站
  7. python中bool啥意思_python中的bool是什么意思
  8. C# 如何避免装箱和拆箱操作
  9. 查询计算机系统操作工,计算机系统操作工B卷
  10. error while loading shared libraries: libopencv_imgcodecs.so.405: cannot open shared object file