首页 > 其他分享 >mybatis-puls的使用

mybatis-puls的使用

时间:2023-07-30 10:11:17浏览次数:33  
标签:name void userMapper page Test 使用 mybatis public puls

MyBatisPlus简介

  1. 无侵入:只做增强不做改变,不会对现有工程产生影响
  2. 强大的CRUD操作:内置通用的Mapper,少量配置即可实现CRUD操作
  3. 支持Lambda:编写查询条件无需担心字段写错
  4. 支持主键自动生成
  5. 内置分页插件

所需的依赖

  <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.3</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.16</version>
</dependency>
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

标准的CRUD操作

  1. 首先定义对应的实体类
  2. 创建对应的Mapper接口,让其继承于BaseMapper<>
  3. 调用内置的CRUD方法
功能 MP接口
新增 int insert(T t)
删除 int deleteById(Serializable id)
修改 int updateById(T t)
根据id查询 T selectById(Serializable id)
查询全部 List selectList()
分页查询 IPage selectPage(IPage page)
按条件查询 IPage selectPage(Wrapper queryWrapper)
  1. 实体类的编写
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserInfo {
    private int id;
    private String name;
    private int age;

    public UserInfo(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

  1. Mapper接口的编写
@Mapper
public interface UserMapper extends BaseMapper<UserInfo> {
    
}
  1. 测试类的编写
@SpringBootTest
class Demo1ApplicationTests {

    @Autowired
    public UserMapper userMapper;
    @Test
    public void save(){
        UserInfo user = new UserInfo("jack",20);
        userMapper.insert(user);
    }
    @Test
    public void delete(){
        userMapper.deleteById(3);
    }
    @Test
    public void update(){
        UserInfo userInfo = new UserInfo();
        userInfo.setName("wang");
        userInfo.setId(1);
        userMapper.updateById(userInfo);
    }
    @Test
    public void getOne(){
        System.out.println(userMapper.selectById(1));
    }
    @Test
    public void getAll() {
        System.out.println(userMapper.selectList(null));
    }

}

MyBatisPlus的调试日志

spring:
  datasource:
      url: jdbc:mysql:///mybatis?serverTimeZone=UTC
      username: root
      password: 123456
      driver-class-name: com.mysql.cj.jdbc.Driver
      type: com.alibaba.druid.pool.DruidDataSource
  main:
    banner-mode: off #关闭SpringBoot 的banner
server:
  port: 8080 # 设置服务器的端口号
logging:
  level:
    root: error # 设置SpringBoot的日志为只有报错的时候打印日志


mybatis-plus:
  global-config:
    db-config:
      table-prefix: # 添加表名的前缀
      id-type: auto # 默认的id是采用雪花算法,auto后就是id自增了
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #标准日志输出

MybatisPlus分页操作

  1. 创建MybatisPlus配置类
@Configuration
public class MyBatisPlusConfigration {
	//设置分页拦截器
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}
  1. 编写测试方法
 @Test
    void pageQuery(){
        IPage page = new Page(1,3);
        userMapper.selectPage(page,null);
        System.out.println(page.getPages());//总页数
        System.out.println(page.getCurrent());//当前页码
        System.out.println(page.getSize());//当前页的数量
        System.out.println(page.getTotal());//总数
        System.out.println(page.getRecords());//返回的集合
    }

MyBatisPlus条件查询

 @Test
    public void whereQuery(){
        String name = "j";
        LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper();
        /*
        * param 1: 判断字符是否为null值,可以省略,一但为null那么sql的模糊查询--> %null%
        * param 2: 根据那个字段进行匹配
        * parma 3: 模糊查询的内容
        */
        queryWrapper.like(Strings.isNotEmpty(name),UserInfo::getName,name);
        userMapper.selectList(queryWrapper);
    }

业务层快速开发

  • 使用MybatisPlus提供有业务层通用接口(IService)与业务层通用的实现类 (ServiceImpl<Mapper,T>)
  • 在通用类的基础上做功能重载或功能追加
  • 重载时尽量不要覆盖原有方法
  • CRUD 接口 | MyBatis-Plus (baomidou.com)
//业务层接口
public interface UserService extends IService<UserInfo> {

}
//业务层实现类
public class UserServiceImpl extends ServiceImpl<UserMapper, UserInfo> implements UserService {
    
}

标签:name,void,userMapper,page,Test,使用,mybatis,public,puls
From: https://www.cnblogs.com/-xyk/p/17591038.html

相关文章

  • 使用Cloud Studio&Flutter完成全平台博客网站的搭建
    前言本文我将使用CloudStudio以及Flutter完成自己的一个博客平台的搭建。并且会将该项目作为模版,供大家使用。先来看一下效果一.CloudStudioCloudStudio是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用CloudStudio时无需安装,随时随地......
  • 快速上手Webpack打包指南:用简单的步骤掌握Webpack的使用技巧
    目录概念:1.webpack打包简介1.0多个JS文件打包:1.1webpack数组形式1.2webpack对象形式总结Webpack的打包过程可以总结为以下几个步骤:1.入口点配置:在Webpack的配置文件中,我们需要指定一个或多个入口点(entrypoints),这些入口点是我们应用程序的起点,Webpack会从这些入口点开始......
  • 【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函
    文章目录一、列表排序1、使用sorted函数对容器进行排序2、使用list.sort函数对列表进行排序3、使用list.sort函数对列表进行排序-设置排序函数4、使用list.sort函数对列表进行排序-设置lambda匿名排序函数pyecharts画廊网站:https://gallery.pyecharts.org/#/......
  • 使用Python统计下桌面某个文件夹下(含多层子文件夹)具体文件的数量(方法三)
    大家好,我是皮皮。一、前言前几天在Python最强王者群【东哥】问了一个Python自动化办公的问题,一起来看看吧。这个是他自己在实际工作中遇到的需求,正好遇到了这个问题,想着用Python来实现下。二、实现过程上一篇文章中已经分享了一个方法,这一篇文章继续分享另外一个方法,由【巭孬......
  • HTML5/CSS3学习——Canvas使用
    什么是Canvas?HTML5的Canvas 元素使用JavaScript在网页上绘制图像。画布是一个矩形区域,你可以控制其每一像素。canvas拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 创建Canvas元素向HTML5页面添加Canvas 元素。规定元素的id、宽度和高度:<canvas......
  • 不启动SpringBootApplication 直接测试mybatis 下面xml中的sql
     测试类 privatestaticSqlSessionsqlSession=null;privatestaticRunoobTblMappermapper; @BeforeClasspublicstaticvoidsetUpMybatisDatabase()throwsIOException{InputStreamresourceAsStream=null;try{ClassLoaderclassLoader=R......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • 在IDEA中使用Git(远程仓库操作)
     直接右击,就可以查看远程仓库 查看远程仓库的别名和地址 ADD添加远程仓库,一个本地仓库其实可以对应多个远程仓库 输入需要添加的远程仓库的别名和地址 -是删除,这里的删除只是代表与该仓库断开连接,不是删除了该远程仓库 右击就可以直接推送到远程仓库 左侧为......
  • Java面试题 P16:Redis篇:Redis使用场景-缓存-缓存穿透
    缓存涉及问题:1、缓存三兄弟:穿透击穿雪崩2、双写一致3、持久化4、数据过期策略5、数据淘汰策略如果发生了缓存穿透,击穿,雪崩,该如何解决?1、缓存穿透什么是缓存穿透,当查询一个不存在的数据,查redis中没有,mysql查询也没有,数据也不会直接写入到redis,就导致每次都要请求数据库,......
  • 在IDEA中使用Git(本地仓库操作)
     在添加新的类(文件)的时候会自动跳出,是否提交到Git中 如果当时没有添加,也可以通过右击添加 会弹出对话框,选择需要添加的文件,以及填写提示信息Message 也可以在idea上面的Git后面找到绿色对号按钮,也是用来提交的同时时钟按钮是用来查看日志的 logall也就是查看所有......