1、Springboot项目引入mysql和mybatis的依赖:

        <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>

2、在application.yml配置数据库连接信息,Mybatis信息,是否打印SQL等(具体看注释):

# Springboot2.1.2默认引入的mysql版本version是8.0.13,其driver-class-name为com.mysql.cj.jdbc.Driver
spring:
datasource:
url: jdbc:mysql://118.25.190.197:3306/order?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: ******
driver-class-name: com.mysql.jdbc.Driver # type-aliases-package批量设置别名作用:就是在mapper.xml文件中直接写类名,不配置就需要写类的全路径名
mybatis:
type-aliases-package: com.example.demo.entity
mapper-locations: classpath:mapping/*.xml # 将mapper接口所在包的日志级别改成debug,可以在控制台打印sql
logging:
level:
com.example.demo.mapper: debug

3、编写Mapper接口(普通接口,无需任何注解参与)统一放在com.example.demo.mapper包下,编写mapper.xml文件(根据上面的配置,统一放在resources/mapping下)

4、在启动类上加注解,扫描Mapper接口所在包路径:

@MapperScan("com.example.demo.mapper")

注:

也可以不在主类使用@MapperScan,而在每个Mapper接口上面添加@Mapper注解,效果一样!

Mapper接口方法有多个参数需要加@Param(“参数名”)注解,否则抛异常说找不到参数。

以上集成完成mybatis,如需集成druid数据库连接池:

5、添加druid依赖:

        <!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>

6、修改application.yml,添加数据库连接池的配置,完成以后内容如下:

# mysql version 8.0.13的driver-class-name:com.mysql.cj.jdbc.Driver
spring:
datasource:
url: jdbc:mysql://118.25.190.197:3306/order?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
# druid
type: com.alibaba.druid.pool.DruidDataSource
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20 # type-aliases-package批量设置别名作用:就是在mapper.xml文件中直接写类名,不配置就需要写类的全路径名
mybatis:
type-aliases-package: com.example.demo.entity
mapper-locations: classpath:mapping/*.xml # 将mapper接口所在包的日志级别改成debug,可以在控制台打印sql
logging:
level:
com.example.demo.mapper: debug

如需集成PageHelper分页:

7、添加依赖:

        <!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>

8、简单使用,采用默认配置即可,调用controller接口传入pageNum(即当前页码,从1开始)和pageSize(即每页条数),添加PageHepler(在开始查询之前)和PageInfo两条语句,原来的查询不需要任何修改:

    @GetMapping("/selectByPage/{pageNum}/{pageSize}")
public PageInfo<GdUsers> selectByPage(@PathVariable int pageNum, @PathVariable int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<GdUsers> list = gdUsersMapper.selectByPage(); //得到从pageNum开始的pageSize条数据
//如果直接返回list,得到了分页的数据,如果添加下面步骤,返回pageInfo,则能得到包括list在内的分页信息
PageInfo<GdUsers> pageInfo = new PageInfo<>(list);
return pageInfo;
}

9、访问http://localhost:8080/index/1/5,控制台打印2条Sql(一条查询总数,一条查询分页数据):

2019-01-31 23:26:29.749 DEBUG 14696 --- [nio-8080-exec-9] c.e.d.m.G.selectByPage_COUNT             : ==>  Preparing: SELECT count(0) FROM gd_users
2019-01-31 23:26:29.750 DEBUG 14696 --- [nio-8080-exec-9] c.e.d.m.G.selectByPage_COUNT : ==> Parameters:
2019-01-31 23:26:29.823 DEBUG 14696 --- [nio-8080-exec-9] c.e.d.m.G.selectByPage_COUNT : <== Total: 1
2019-01-31 23:26:29.824 DEBUG 14696 --- [nio-8080-exec-9] c.e.d.mapper.GdUsersMapper.selectByPage : ==> Preparing: select * from gd_users LIMIT ?
2019-01-31 23:26:29.824 DEBUG 14696 --- [nio-8080-exec-9] c.e.d.mapper.GdUsersMapper.selectByPage : ==> Parameters: 5(Integer)
2019-01-31 23:26:29.893 DEBUG 14696 --- [nio-8080-exec-9] c.e.d.mapper.GdUsersMapper.selectByPage : <== Total: 5

返回的pageInfo数据:

注释:

网上说下面2句代码之间不能插入其它逻辑,否则分页不成功,我测试可以,但最好不要在中间插入别的数据库操作(未测):

PageHelper.startPage(pageNum, pageSize);
List<GdUsers> list = gdUsersMapper.selectByPage();

SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):

cache – 给定命名空间的缓存配置。
cache-ref – 其他命名空间缓存配置的引用。
resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除,这里不会记录。
sql – 可被其他语句引用的可重用语句块。
insert – 映射插入语句
update – 映射更新语句
delete – 映射删除语句
select – 映射查询语句

Springboot集成Mybatis+PageHelper的更多相关文章

  1. SpringBoot集成Mybatis并具有分页功能PageHelper

    SpringBoot集成Mybatis并具有分页功能PageHelper   环境:IDEA编译工具   第一步:生成测试的数据库表和数据   SET FOREIGN_KEY_CHECKS=0;   ...

  2. BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析

    重构代码,方法抛出异常:BindingException: Invalid bound statement (not found) 提示信息很明显:mybatis没有提供某方法 先不解释问题原因和排查 ...

  3. springboot集成mybatis(二)

    上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...

  4. springboot集成mybatis(一)

    MyBatis简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyB ...

  5. SpringBoot 集成Mybatis 连接Mysql数据库

    记录SpringBoot 集成Mybatis 连接数据库 防止后面忘记 1.添加Mybatis和Mysql依赖 <dependency> <groupId>org.mybati ...

  6. SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版)

    SpringBoot Mybatis整合(注解版),SpringBoot集成Mybatis(注解版) ================================ ©Copyright 蕃薯耀 2 ...

  7. Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket

    https://blog.csdn.net/a123demi/article/details/78234023  : Springboot集成mybatis(mysql),mail,mongodb,c ...

  8. springboot整合mybatis+pageHelper

    springboot整合mybatis+pageHelper 〇.搭建sporingboot环境,已经整合mybatis环境,本篇主要是添加pageHelper工具 一.添加依赖 <!-- 分页 ...

  9. SpringBoot集成Mybatis配置动态数据源

    很多人在项目里边都会用到多个数据源,下面记录一次SpringBoot集成Mybatis配置多数据源的过程. pom.xml <?xml version="1.0" encod ...

随机推荐

  1. Envoy的线程模型[翻译]

    Envoy threading Model 关于envoy 代码的底层文档相当稀少.为了解决这个问题我计划编写一系列文档来描述各个子系统的工作.由于是第一篇, 请让我知道你希望其他主题覆盖哪些内容. ...

  2. rabbitmq路由规则

    信道如何共用???? 几台机器共用一个channel 如何做到?

  3. 四、Angular新建组件和使用

    1.新建组件命令 ng component 组件路径 如果报错换成 ng generate component 组件路径 2.组件 ts 文件详解 3.组件会自动引入到app.mudule.ts里面 ...

  4. ThreadPoolTaskExecutor使用详解

    当我们需要实现并发.异步等操作时,通常都会使用到ThreadPoolTaskExecutor,现对其使用稍作总结. 配置ThreadPoolTaskExecutor通常通过XML方式配置,或者通过Ex ...

  5. MFC的Dlg和App什么区别?应用程序类与对话框类

    MFC里有个app类..他是一个项目工程类,有一个全局的实例化.theApp你可以理解为整个项目的实例,它重载了入口函数,所有的窗口神马的,都是在这个类里实例化的. dlg是对话框,是一个窗口.一个程 ...

  6. bzoj4489 [Jsoi2015]地铁线路 最短路

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4489 题解 感觉又被骗了.看这道题的 AC 人数不多,以为是一道很好的题目.结果发现是一个非常 ...

  7. RandomAccessFile类学习

    RandomAccessFile类学习 RandomAccessFile是io包的类,从Object直接继承而来,只可以对文件进行操作,可以对文件进行读取和写入. 当模式为r:当文件不存在时会报异常: ...

  8. centos 6.5 安装 mysql 5.6.19

    首先要做点清洁工作,检查是否存在 mysql 相关的库或安装文件,有则删除 rpm -qa|grep -i mysql rpm -e --nodeps filename 如果是重新安装 mysql,还 ...

  9. Ubuntu安装openmpi

    Ubuntu 下安装 openmpi 需要同时安装下面三个包: sudo apt-get install openmpi-bin openmpi-doc libopenmpi-dev 建议更新系统源之 ...

  10. Linux系统下安装JDK及环境配置

    第一种属于傻瓜式安装,一键安装即可(yum安装): 第二种手动安装,需要自己去Oracle官网下载需要的jdk版本(需官网注册登录才可以下载),然后解压并配置环境. 一.yum一键安装1.首先执行以下 ...