用完spring-data-jpa之后并不是很想用mybatis,但是没办法呀,大环境还是mybatis,而且现在mybatis也出了不少插件,我们还是一起看看如何整合mybatis吧 关于整合mybatis有两种方式,一种是注解方式,另一种是传统的xml方式

注解方式

先看看引入的依赖

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
复制代码

sql文件

CREATE TABLE `test`.`Untitled`  (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`passwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
复制代码

application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///test?useSSL=true
spring.datasource.username=root
spring.datasource.password=root#打印sql语句到控制台
logging.level.com.priv.gabriel.demoformybatis.mapper=debug复制代码

User.java

package com.priv.gabriel.demoformybatis.entity;/*** Created with Intellij IDEA.** @Author: Gabriel* @Date: 2018-10-14* @Description:*/
public class User {private long id;private String username;private String passwd;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPasswd() {return passwd;}public void setPasswd(String passwd) {this.passwd = passwd;}
}
复制代码

UserMapper.java

package com.priv.gabriel.demoformybatis.mapper;import com.priv.gabriel.demoformybatis.entity.User;
import org.apache.ibatis.annotations.*;/*** Created with Intellij IDEA.** @Author: Gabriel* @Date: 2018-10-14* @Description:*/
@Mapper
public interface UserMapper {/*注解方式的话直接在方法上写上对应的sql语句就可以了*/@Select("select * from user where id = #{id}")/*如果需要重复使用该Result,给该Results加一个 id 属性,下面即可使用@ResultMap(id)重复调用*/@Results(id = "user",value = {@Result(property = "username",column = "name")})User findById(long id);/*获取回传自增id*//*id会自动存入user中*/@Insert("insert into user(name,passwd) values (#{username},#{passwd})")@Options(useGeneratedKeys = true,keyProperty = "id")int inertUser(User user);
}复制代码

UserController.java

package com.priv.gabriel.demoformybatis.controller;import com.priv.gabriel.demoformybatis.entity.User;
import com.priv.gabriel.demoformybatis.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** Created with Intellij IDEA.** @Author: Gabriel* @Date: 2018-10-14* @Description:*/
@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserMapper userMapper;@RequestMapping(value = "/{id}",method = RequestMethod.GET)public User selectById(@PathVariable long id){return userMapper.findById(id);}@RequestMapping(value = {""},method = RequestMethod.POST)public String addUser(User user){userMapper.inertUser(user);return "现在自增id为"+user.getId();}
}复制代码

在SpringBoot1.x中还需要在启动类中加入@MapperScan("mapper所在目录"),而在2.x版本中不需要加入就可以自动扫描到mapper了

加入分页

需要引入pageHelper依赖

        <!-- 引入分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.5</version></dependency>
复制代码

在UserMapper中新增一个查询所有信息的方法

    @Select("select * from user")/*调用之前的Results*/@ResultMap("user")List<User> listUser();
复制代码

在Controller中调用

    /*获取分页数据 包含分页详细信息*/@RequestMapping(value = "/",method = RequestMethod.GET)public PageInfo getAll(@RequestParam Integer page, @RequestParam Integer size){PageHelper.startPage(page,size);List<User> users = userMapper.listUser();PageInfo<User> pageInfo = new PageInfo(users);return pageInfo;}/*仅获取分页数据@RequestMapping(value = "/",method = RequestMethod.GET)public List<User> getAll(@RequestParam Integer page, @RequestParam Integer size){PageHelper.startPage(page,size);List<User> users = userMapper.listUser();return users;}*/
复制代码

XML方式

xml方式的话和以前Spring整合mybatis没有太大的区别,在这里可以使用Mybatis-Generator自动生成代码少些一点代码,其余的话就不多介绍了

整合通用Mapper

不管是使用注解方式还是XML方式都还是会存在一个什么都得自己动手的情况,接下来的话,我们整合一个通用的Mapper,在mybatis中体验jpa的感觉 引用依赖

<!-- 引入通用mapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.0.4</version></dependency>
复制代码

继承BaseMapper

package com.priv.gabriel.demoformybatis.mapper;import com.priv.gabriel.demoformybatis.entity.User;
import org.apache.ibatis.annotations.Mapper;
import tk.mybatis.mapper.common.BaseMapper;/*** Created with Intellij IDEA.** @Author: Gabriel* @Date: 2018-10-14* @Description:*/
@Mapper
public interface UserCommonMapper extends BaseMapper<User> {
}复制代码

接着在Controller中调用

   @Autowiredprivate UserCommonMapper mapper;@RequestMapping("/testCommonMapperForSelectAll")public List<User> testCommonMapper(){return mapper.selectAll();}
复制代码

关于mybatis的扩展很多,还有像mybatis-plus,关于这个话有时间再说吧,ε=ε=ε=┏(゜ロ゜;)┛

转载于:https://juejin.im/post/5c1ca9dc6fb9a049f06a3cc0

第四篇 SpringBoot 2 x整合MyBatis相关推荐

  1. SpringBoot2.x【四】自动化生成代码整合Mybatis

    SpringBoot2.x[四]自动化生成代码整合Mybatis Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以简易理解为中介,相对于它,还有个中介是hibernate, ...

  2. SpringBoot 实战 (九) | 整合 Mybatis

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,本文通过注解的形式实 ...

  3. 利用IDEA搭建SpringBoot项目,整合mybatis,实现简单的登录功能。

    利用IDEA搭建SpringBoot项目,整合mybatis,实现简单的登录功能. 仅供参考!!! 仅供参考!!! 仅供参考!!! 利用闲余时间想自己搭建一个springboot+mybatis的项目 ...

  4. 玩转 SpringBoot 2.x 整合 Mybatis

    前言 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...

  5. 第十篇:Spring Boot整合mybatis+Mysql 入门试炼02

    前言: 1.(SprigBoot整合SpringMVC+Mybatis) 2.以thymeleaf作为视图层技术整合 3.springboot版本2.0.5.RELEASE 创建项目 1.添加依赖及启 ...

  6. SpringBoot 2.x 整合Mybatis一:基础

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80694228 本文出自[赵彦军的博客] 什么是 MyBatis ? MyBatis ...

  7. springboot整合mysql5.7_每天五分钟写K8(四):SpringBoot与mysql整合

    在第一节中我们创建了mysql的Service,上一节我们运行了Spring-boot的项目.这一节我们将两个项目结合起来,让spring-boot访问mysql服务. 一.给Spring-boot项 ...

  8. 第十篇:Spring Boot整合mybatis+逆向工程(Mysql+Oracle) 入门试炼01

    1.添加pom依赖 <dependencies><!--springboot web 启动器--><dependency><groupId>org.sp ...

  9. 第四篇:Spring Boot 整合listener

    一.Spring Boot整合listener 第一种方案:通过注解扫描完成Listener的注册 1.1 编写一个listener @WebListener public class FirstLi ...

  10. springboot实现快速整合mybatis+mysql

    springboot如今火爆的程度大有将传统的ssm比下去的势头,究其原因,还是springboot被越来越多的公司使用,其简洁的配置,优秀的封装性,便捷的全注解开发,同时由于和越来越多的其他框架进行 ...

最新文章

  1. maven 插件之 AutoConfig 工具使用笔记
  2. bmp和png读取速率和处理速率比较
  3. python显示无效语法怎么处理-Python不支持 i ++ 语法的原因解析
  4. linux fedora35安装、登录postgresql-14数据库命令整理
  5. FreeBSD 创始人-Jordan Hubbard
  6. 需要微缓存吗? 营救记忆
  7. React开发(124):ant design学习指南之form中的属性
  8. 前端学习(2175):认识路由文件的懒加载
  9. 图论 —— 生成树 —— 次小生成树
  10. linux caffe生成的模型,深度学习之pytorch转caffe转ncnn模型转换(三)
  11. CentOS+Subversion
  12. golang利用反射写入excel的简单工具类
  13. 【转】Dalvik虚拟机的启动过程分析
  14. lda 协方差矩阵_数据降维算法总结(LDAamp;PCA)
  15. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一2.8  黄金分割的三分法构图...
  16. 【SSM】企业差旅管理系统-李兴华-专题视频课程
  17. linux典型压缩包操作 tar打包、压缩与解压
  18. yolov4 火焰检测 火焰识别 代码 数据集 开源
  19. c语言常量(c语言常量定义规则)
  20. Ansys 2022 安装教程(附赠免费的安装包)

热门文章

  1. 【5003】马遍历问题
  2. hadoop无法启动DataNode问题
  3. 2016 ACM/ICPC 沈阳站 小结
  4. span width无效
  5. NodeJS写模块和引入模块的例子
  6. /usr 的由来及/usr目录结构 [转]
  7. Oracle:ODP.NET Managed 小试牛刀
  8. MySQL数据库学习【第二篇】基本操作和存储引擎
  9. 课堂作业04 2017.10.27
  10. 11.求二叉树中节点的最大距离