欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通用Mapper和PageHelper入门

程序员文章站 2022-07-16 16:18:36
...

两个项目的共同点都是mybatis的插件,并且出自同一作者之手

通用Mapper介绍:

  1. 可以方便完成单表的增删改查,暂不支持多表的查询
  2. 抛弃mapper.xml的编写, 对于频繁修改数据库的情况,只需修改 model中的字段即可
  3. 当不同数据库进行切换的时候,无需修改代码
  4. 应用的缓存机制,并不是每次都是动态生成sql语句
pageHelpr介绍

无感知完成分页过程,利用Threadlocal完成完成Page对象在线程间的传输.

  • springboot 集成
    pom.xml
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--通用mapper中已经添加了mybatis的启动器的依赖因此可以省略-->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>

application.yaml配置

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.2.156:3306/heima
    username: root
    password: 123456
mybatis:
  type-aliases-package: com.leyou.item.pojo

springboot启动类

import tk.mybatis.spring.annotation.MapperScan;

@EnableDiscoveryClient
@SpringBootApplication
//此处一定要引用通用mapper的依赖
@MapperScan("com.leyou.mapper")
public class LeyouItemServiceApp {
    public static void main(String[] args) {
        SpringApplication.run(LeyouItemServiceApp.class,args);
    }
}

mapper.java文件和javabean

package com.leyou.mapper;
import com.leyou.item.pojo.Brand;
import tk.mybatis.mapper.common.Mapper;

public interface BrandMapper extends Mapper<Brand> {
}
//javabean
@Table(name = "tb_brand")
@Data
public class Brand {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String image;
    private Character letter;
}

代码中的应用

public List<Category> queryCategoryByPid(Long pid) {
     Category category = new Category();
     //通过对象中的属性查询列表数据
     category.setParentId(pid);
     return categoryMapper.select(category);
 }
    public PageResult<Brand> queryBrandsByPage(String key, Integer page, Integer rows, String sortBy, Boolean desc) {
        //建立查询的example对象
        Example example = new Example(Brand.class);
        //获取查询条件
        Example.Criteria criteria = example.createCriteria();
        //根据属性信息确定查询条件
        if(StringUtils.isNotBlank(key)){
            //模糊查询的确定方式
            criteria.andLike("name","%"+key+"%").orEqualTo("letter",key);
        }

        if(StringUtils.isNotBlank(sortBy)){
            //排序操作
            example.setOrderByClause(sortBy+" "+(desc?"desc":"asc"));
        }
        //通用PageHelper用法一
        PageHelper.startPage(page,rows);
        //我感觉侵犯你,总条数,分页语句已经执行,
        List<Brand> brands = brandMapper.selectByExample(example);
        //将分页数据解析
        PageInfo<Brand> info = new PageInfo<>(brands);
        return new PageResult<>(info.getTotal(),info.getList());
    }

通用Mapper和PageHelper入门

相关标签: # springboot