我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mybatis-plus框架使用配置

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mybatis-plus框架使用配置

Mybatis-plus框架使用配置

MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变。使得我们可以可以在 Mybatis 开发的项目上直接进行升级为 Mybatis-plus,正如它对自己的定位,它能够帮助我们进一步简化开发过程,提高开发效率。

Mybatis-Plus 其实可以看作是对 Mybatis 的再一次封装,升级之后,对于单表的 CRUD 操作,调用 Mybatis-Plus 所提供的 API 就能够轻松实现,此外还提供了各种查询方式、分页等行为。最最重要的,开发人员还不用去编写 XML,这就大大降低了开发难度
一、引入依赖

<dependency>                <groupId>org.springframework.bootgroupId>                <artifactId>spring-boot-starter-webartifactId>                <version>2.3.3.RELEASEversion>            dependency><dependency>                <groupId>com.baomidougroupId>                <artifactId>mybatis-plus-annotationartifactId>                <version>3.3.2version>            dependency><dependency>                <groupId>com.baomidougroupId>                <artifactId>mybatis-plus-boot-starterartifactId>                <version>3.3.2version>            dependency>                        <dependency>                <groupId>com.github.pagehelpergroupId>                <artifactId>pagehelper-spring-boot-starterartifactId>                <version>1.2.12version>            dependency>                        <dependency>                <groupId>mysqlgroupId>                <artifactId>mysql-connector-javaartifactId>                <version>5.1.9version>            dependency>                        <dependency>                <groupId>com.alibabagroupId>                <artifactId>druid-spring-boot-starterartifactId>                <version>1.1.10version>            dependency>                       <dependency>                <groupId>cn.hutoolgroupId>                <artifactId>hutool-allartifactId>                <version>5.8.5version>            dependency><dependency>                <groupId>com.alibabagroupId>                <artifactId>fastjsonartifactId>                <version>1.2.21version>            dependency>                        <dependency>                <groupId>org.projectlombokgroupId>                <artifactId>lombokartifactId>                <version>1.18.16version>            dependency>

二、application.yml文件配置

#服务端口号server:  port: 9022#mybatis配置mybatis-plus:  mapper-locations: classpath:/mapper/*.xml  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl    call-setters-on-nulls: true#数据库配置spring:  datasource:    driver-class-name: com.mysql.jdbc.Driver    type: com.alibaba.druid.pool.DruidDataSource    url: jdbc:mysql://localhost:3306/supply_goods?useUnicode=true&characterEncoding=utf8    username: root    password: 123456

三、数据库表sql

CREATE TABLE `user` (  `id` bigint(18) NOT NULL AUTO_INCREMENT COMMENT 'id',  `username` varchar(255) DEFAULT NULL COMMENT '用户名',  `password` varchar(255) DEFAULT NULL COMMENT '密码',  `sex` tinyint(1) DEFAULT NULL COMMENT '性别:0男、1女',  `dept` varchar(255) DEFAULT NULL COMMENT '部门',  `created` datetime DEFAULT NULL COMMENT '创建时间',  `create_by` bigint(20) DEFAULT NULL COMMENT '创建人',  `modify_by` bigint(20) DEFAULT NULL COMMENT '更新人',  `last_update_time` datetime DEFAULT NULL COMMENT '更新时间',  `del_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除:0未删除 1已删除',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

四、实体类
sql在线生成s实体类:https://java.bejson.com/generator/

package com.supplier.domain;import com.baomidou.mybatisplus.annotation.*;import lombok.Data;import java.io.Serializable;import java.util.Date;@TableName("user")@Datapublic class User implements Serializable {        @TableId(type = IdType.AUTO)    private Integer id;        private String username;        private String password;        private Integer sex;        private String dept;        @TableField(value = "create_by", fill = FieldFill.INSERT)    private String createBy;        @TableField(value = "modify_by", fill = FieldFill.UPDATE)    private String modifyBy;        @TableField(value = "created", fill = FieldFill.INSERT)    private Date created;        @TableField(value = "last_update_time", fill = FieldFill.INSERT_UPDATE)    private Date lastUpdateTime;        private Boolean delFlag;        @TableField(exist = false)    private String exit;}

返回实体类

package com.supplier.model;import com.supplier.constant.SysConstant;import lombok.Data;import java.io.Serializable;@Datapublic class R<T> implements Serializable {    private static final long serialVersionUID = 1L;        private int code;        private String msg;        private T data;    public static <T> R<T> ok() {        return restResult(null, SysConstant.SUCCESS_CODE, SysConstant.SUCCESS_MSG);    }    public static <T> R<T> ok(T data) {        return restResult(data, SysConstant.SUCCESS_CODE, SysConstant.SUCCESS_MSG);    }    public static <T> R<T> ok(T data, String msg) {        return restResult(data, SysConstant.SUCCESS_CODE, msg);    }    public static <T> R<T> fail() {        return restResult(null, SysConstant.FAIL_CODE, SysConstant.FAIL_MSG);    }    public static <T> R<T> fail(String msg) {        return restResult(null, SysConstant.FAIL_CODE, msg);    }    public static <T> R<T> fail(T data) {        return restResult(data, SysConstant.FAIL_CODE, SysConstant.FAIL_MSG);    }    public static <T> R<T> fail(T data, String msg) {        return restResult(data, SysConstant.FAIL_CODE, msg);    }    public static <T> R<T> fail(int code, String msg) {        return restResult(null, code, msg);    }    private static <T> R<T> restResult(T data, int code, String msg) {        R<T> apiResult = new R<>();        apiResult.setCode(code);        apiResult.setData(data);        apiResult.setMsg(msg);        return apiResult;    }}
package com.supplier.constant;public interface SysConstant {        String SUCCESS_MSG = "请求成功!";    int SUCCESS_CODE = 200;        String FAIL_MSG = "请求失败!";    int FAIL_CODE = 500;}

分页实体类

package com.supplier.model;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;import java.util.List;@Data@NoArgsConstructorpublic class PageModel<T> implements Serializable {        public int pageNum;        public int pageSize;        public long total;        public List list;        public PageModel(int pageNum, int pageSize, long total, List list) {        this.pageNum = pageNum;        this.pageSize = pageSize;        this.total = total;        this.list = list;    }}

五、配置类
mybatis-plus分页配置(也可以直接引入mybatis分页插件)

package com.supplier.config;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;import com.baomidou.mybatisplus.extension.incrementer.H2KeyGenerator;import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration@MapperScan("com.supplier.mapper")public class MybatisPlusConfig {        @Bean    public PaginationInterceptor paginationInterceptor() {        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();        paginationInterceptor.setDbType(DbType.MYSQL);        return paginationInterceptor;    }        @Bean    public OptimisticLockerInterceptor optimisticLockerInterceptor() {        return new OptimisticLockerInterceptor();    }    @Bean    public IKeyGenerator iKeyGenerator() {        return new H2KeyGenerator();    }}

插入、更新时设置字段默认值,更新时必须使用一下方式才生效

package com.supplier.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.reflection.MetaObject;import org.springframework.stereotype.Component;import java.util.Date;@Slf4j@Componentpublic class AutoFillHandler implements MetaObjectHandler {        @Override    public void insertFill(MetaObject metaObject) {        String userId = "1234";        this.strictInsertFill(metaObject, "createBy", String.class, userId);        this.strictInsertFill(metaObject, "created", Date.class, new Date());        this.strictInsertFill(metaObject, "lastUpdateTime", Date.class, new Date());    }        @Override    public void updateFill(MetaObject metaObject) {        String userId = "22";        this.strictUpdateFill(metaObject, "modifyBy", String.class, userId);        this.strictUpdateFill(metaObject, "lastUpdateTime", Date.class, new Date());    }}

六、业务逻辑处理(Service接口类)

package com.supplier.service;import com.baomidou.mybatisplus.extension.service.IService;import com.supplier.domain.User;import com.supplier.model.PageModel;public interface UserService extends IService<User> {        void add(User user);        void modify(User user);            User detail(Integer id);        PageModel lists(Integer pageNum,Integer pageSize);        void delete(Integer id);}

实现类

package com.supplier.service.impl;import cn.hutool.core.bean.BeanUtil;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.github.pagehelper.Page;import com.github.pagehelper.PageHelper;import com.supplier.domain.User;import com.supplier.mapper.UserMapper;import com.supplier.model.PageModel;import com.supplier.service.UserService;import org.apache.commons.lang3.StringUtils;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {    @Override    public void add(User user) {        this.baseMapper.insert(user);    }    @Override    public void modify(User user) {        //当重新new对象时,会调用自动填充更新时间和更新人的数据        User userNews = new User();        BeanUtil.copyProperties(user,userNews);        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();        userUpdateWrapper.eq("id",user.getId());        this.baseMapper.update(user,userUpdateWrapper);    }    @Override    public User detail(Integer id) {        //需要筛选条件时        return this.baseMapper.selectOne(new QueryWrapper<User>().eq("id",id).last("limit 1"));    }    public PageModel listsTwo(Integer pageNum,Integer pageSize) {        //第一种分页,使用mybatis插件        PageHelper.startPage(pageNum,pageSize);        Page<User> list = this.baseMapper.lists();        return new PageModel(pageNum,pageSize,list.getTotal(),list.getResult());    }    @Override    public PageModel lists(Integer pageNum,Integer pageSize){        //第二种分页,mybatis-plus分页        com.baomidou.mybatisplus.extension.plugins.pagination.Page<User> userPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum,pageSize);        com.baomidou.mybatisplus.extension.plugins.pagination.Page<User> list = this.baseMapper.selectPage(userPage, null);        return new PageModel(pageNum,pageSize,list.getTotal(),list.getRecords());    }    public List<User> selectInfo(String username, Integer sex) {        QueryWrapper<User> queryWrapper = new QueryWrapper();        //使用eq表示查询值为必填,select表示查询字段        queryWrapper.like(StringUtils.isNoneBlank(username),"username",username).eq("sex",sex).select("id","username");        //无查询条件        return this.baseMapper.selectList(queryWrapper);    }    @Override    public void delete(Integer id) {        this.baseMapper.deleteById(id);    }}

七、数据访问层(dao接口类)

package com.supplier.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.github.pagehelper.Page;import com.supplier.domain.User;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface UserMapper extends BaseMapper<User> {    Page<User> lists();}

mapper文件

DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.supplier.mapper.UserMapper">    <select id="lists" resultType="com.supplier.domain.User">        select * from `user`    select>mapper>

八、控制层(controller)

package com.supplier.controller;import com.supplier.domain.User;import com.supplier.model.R;import com.supplier.service.UserService;import org.springframework.web.bind.annotation.*;@RestController@RequestMapping("/user")public class UserController {    private final UserService userService;    public UserController(UserService userService) {        this.userService = userService;    }        @PostMapping    public R add(@RequestBody User user){        userService.add(user);        return R.ok();    }        @PutMapping    public R modify(@RequestBody User user){        userService.modify(user);        return R.ok();    }        @GetMapping("/{id}")    public R detail(@PathVariable Integer id){        return R.ok(userService.detail(id));    }        @GetMapping    public R list(@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "10")Integer pageSize){        return R.ok(userService.lists(pageNum,pageSize));    }        @DeleteMapping    public R delete(Integer id){        userService.delete(id);        return R.ok();    }}

来源地址:https://blog.csdn.net/m0_46300599/article/details/127999193

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mybatis-plus框架使用配置

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mybatis Plus框架源码分析

这篇文章主要介绍了Mybatis Plus框架源码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis Plus框架源码分析文章都会有所收获,下面我们一起来看看吧。基础设计BaseEntity对于数
2023-07-05

若依框架整合mybatis-plus

在使用若依(RuoYi-vue)时,发现若依用的是mybatis而不是mybatis-plus,所以为了保留原有代码生成器生成的方法,外加入mybaits-plus,故有了下面的内容: 1、ruoyi-admin的prom.xml中添加my
2023-08-17

MyBatis-Plus分页插件的配置与使用

MyBatis-Plus分页插件的配置与使用 1. 分页插件的配置1.1 MyBatis-Plus依赖配置1.2 MyBatis-Plus分页插件配置 2. 分页插件的使用2.1 理论分析2.1 代码实现 1. 分页插件
2023-08-17

Mybatis-Plus配置Oracle和MySQL

准备工作 1、导包 dependencies> dependency> groupId>org.springframework.bootgroupId> ar
2023-08-20

mybatis-plus在yml中配置详解

本文主要介绍了mybatis-plus在yml中配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-24

mybatis-plus怎么配置逻辑删除

本篇内容介绍了“mybatis-plus怎么配置逻辑删除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mybatis-plus配置逻辑删除引
2023-07-02

Mybatis-Plus如何配置分页对象

本文主要介绍了Mybatis-Plus如何配置分页对象,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

如何使用Mybatis-plus实现多租户架构

这篇文章给大家分享的是有关如何使用Mybatis-plus实现多租户架构的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。多租户(Multi-Tenant)是SaaS中的一个重要概念,它是一种软件架构技术,在多个租户
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录