Spring Boot整合Mybatis

本文介绍了如何在SpringBoot项目中整合Mybatis和Druid数据源,包括添加相关依赖、配置实体类、编写Mapper接口与XML文件、设置SpringBoot启动类的Mapper扫描以及配置application.yml文件。此外,还展示了使用PageHelper进行分页查询的方法,包括PageInfo的属性及其使用。
摘要由CSDN通过智能技术生成

title: springboot整合Mybatis
date: 2020-10-7
tags:

  • spring
  • springboot
  • Mybatis
    categories:
  • spring
  • springboot
  • springboot-Mybatis

概览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPIjf0KM-1655041459974)(http://qiniu.zhouhongyin.top/2022/06/12/1655041452-image-20201007203125456.png)]

一、导入pom.xml依赖

<!--web依赖-->
<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>2.1.3</version>
</dependency>

<!--热加载-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

<!--mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<!--mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>
<!--druid数据源-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>


<!--lombok插件-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

二、编写entity实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PhoneNumber {

  private long orderNumber;
  private String name;
  private long id;
  private String phoneNumber;
  private String classNumber;

}

三、编写dao层

3.1 编写mapper接口

@Repository
public interface PhoneNumberMapper {
    List<PhoneNumber> findAll();
}

3.2 编写mapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhy.dao.PhoneNumberMapper">
    <select id="findAll" resultType="PhoneNumber">
        select * from phone_number;
    </select>
</mapper>

3.3 在springboot启动类上添加mapper扫描注解

@SpringBootApplication
@MapperScan(basePackages = "com.zhy.dao")
public class SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisApplication.class, args);
    }
}

四、编写application.yml配置文件

# datasource
spring:
  datasource:
    password: root
    username: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/softwareclass2?serverTimezone=UTC

# mybatis
mybatis:
  mapper-locations: classpath:mapper/*.xml  # mapper.xml配置地址
  type-aliases-package: com.zhy.entity  # 起别名
  configuration:
    map-underscore-to-camel-case: true  # 下划线转驼峰
logging:
  level:
    com.zhy.dao: debug

五、编写service层

5.1 添加分页助手

PageInfo的属性表:

private int pageNum:当前页

private int pageSize:每页的数量

private int size:当前页的数量 //由于startRow和endRow不常用,这里说个具体的用法 //可以在页面中"显示startRow到endRow 共size条数据"

private int startRow:当前页面第一个元素在数据库中的行号

private int endRow:当前页面最后一个元素在数据库中的行号

private long total:总记录数

private int pages:总页数

private List<T> list:结果集

private int firstPage:第一页

private int prePage:前一页

private boolean isFirstPage = false:是否为第一页

private boolean isLastPage = false:是否为最后一页

private boolean hasPreviousPage = false:是否有前一页

private boolean hasNextPage = false:是否有下一页

private int navigatePages:导航页码数

private int[] navigatepageNums:所有导航页号

5.1.1 添加分页助手的相关依赖
<!--分页助手-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.10</version>
</dependency>
5.1.2 编写service接口及其实现类
public interface PhoneNumberService {
    public PageInfo changePage(int page,int limit);
}
5.1.3 编写service的实现类
@Service
public class PhoneNumberServiceImpl implements PhoneNumberService {

    @Resource
    private PhoneNumberMapper phoneNumberMapper;

    @Override
    public PageInfo changePage(int pageNum, int pageSize) {
        //开启分页
        PageHelper.startPage(pageNum,pageSize);
        List<PhoneNumber> list = phoneNumberMapper.findAll();

        PageInfo<PhoneNumber> pageInfo = new PageInfo<>(list);
        return  pageInfo;
    }
}

六、测试

@SpringBootTest
class SpringbootMybatisApplicationTests {
    @Resource
    private PhoneNumberMapper phoneNumberMapper;

    @Test
    void contextLoads() {
        List<PhoneNumber> all = phoneNumberMapper.findAll();
        for (PhoneNumber phoneNumber : all) {
            System.out.println(phoneNumber);
        }
    }
    
    @Test
    void pageHelper() {

        PageHelper.startPage(1,5);
        List<PhoneNumber> list = phoneNumberMapper.findAll();

        PageInfo<PhoneNumber> pageInfo = new PageInfo<>(list);
        System.out.println(pageInfo);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值