Mybatis-plus框架使用配置

这篇具有很好参考价值的文章主要介绍了Mybatis-plus框架使用配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Mybatis-plus框架使用配置

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

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

			<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.3.3.RELEASE</version>
            </dependency>
			<!--mybatis-plus依赖-->
			<dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-annotation</artifactId>
                <version>3.3.2</version>
            </dependency>
			<dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.3.2</version>
            </dependency>
            <!--mybatis分页-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.12</version>
            </dependency>
            <!--mysql依赖-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.9</version>
            </dependency>
            <!--线程池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
            </dependency>
            <!--工具类-->
           <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.8.5</version>
            </dependency>
			<dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.21</version>
            </dependency>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.16</version>
            </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;

/**
 * @description user
 * @author zz
 * @date 2022-11-23
 */
@TableName("user")
@Data
public class User implements Serializable {

    /**
    * id
    */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
    * 用户名
    */
    private String username;

    /**
    * 密码
    */
    private String password;

    /**
    * 性别:0男、1女
    */
    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;

    /**
     * 是否删除1.删除 0.未删除
     */
    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;

/**
 * @author zz
 * @createTime 2021-10-24 18:28
 * @description 公共返回对象值
 */
@Data
public 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;
/**
 * @author zz
 * @date 2022/10/31 11:26
 */
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;

/**
 * @author zz
 * @date 2022-11-02 10:01
 */
@Data
@NoArgsConstructor
public 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;

/**
 * @author zz
 * @description mybatis-plus
 */
@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;

/**
 * @author zz
 * @createTime 2022-11-02 10:01
 * @description 插入或更新
 */
@Slf4j
@Component
public 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;

/**
 * @author zz
 * @date 2022/11/23 14:34
 */
public interface UserService extends IService<User> {

    /**新增用户
     * @param user 对象
     */
    void add(User user);

    /**更新用户
     * @param user 对象
     */
    void modify(User user);
    
    /**用户详情
     * @param id id
     * @return 结果
     */
    User detail(Integer id);


    /**用户列表
     * @param pageNum 页码
     * @param pageSize 条数
     * @return 结果
     */
    PageModel lists(Integer pageNum,Integer pageSize);

    /**删除用户
     * @param id id
     */
    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;

/**
 * @author zz
 * @date 2022/11/23 14:34
 */
@Service
public 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;
/**
 * @author zz
 * @date 2022/11/23 14:35
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    Page<User> lists();
}

mapper文件

<?xml version="1.0" encoding="UTF-8"?>
<!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)文章来源地址https://www.toymoban.com/news/detail-697756.html

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.*;

/**
 * @author zz
 * @date 2022/11/23 14:34
 */
@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();
    }

}

到了这里,关于Mybatis-plus框架使用配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Java系列】Mybatis-Plus 使用方式介绍

    【Java系列】Mybatis-Plus 使用方式介绍

    Mybatis-Plus 提供了多种方式来执行 SQL,包括使用注解、XML 映射文件和 Lambda 表达式等。其中,使用 Lambda 表达式是 Mybatis-Plus 推荐的方式,因为它更加直观和类型安全。 以下是一个使用 Lambda 表达式执行 SQL 的示例,现在我们有一个名为  User  的实体类,其中包含  id 、 name  

    2024年02月07日
    浏览(14)
  • MyBatis-Plus 超详细笔记|配置使用|多种查询|常用注解

    Mybatis-Plus可以节省大量时间,所有的CRUD代码都可以自动化完成。 MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其在 MyBatis 的基础上提供了很多方便的 CRUD 操作、分页查询、逻辑删除、自动填充等功能。 在Maven项目中,

    2024年02月05日
    浏览(12)
  • Mybatis 框架 ( 三 ) Mybatis-Plus

    Mybatis 框架 ( 三 ) Mybatis-Plus

    官网 : https://www.baomidou.com/ MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上封装了大量常规操作,减少了SQL的编写量。 使用时通常通过Springboot框架整合使用 并且使用Lombok框架简化实体类 重点注意 : 与 SpringBoot整合时, 在启动类增加注解 @MapperScan(\\\"mapper接口路径 \\\") 或者

    2024年02月01日
    浏览(11)
  • 实现 MyBatis-Plus 中的配置加密功能(使用 AES 算法)

    在项目开发过程中,为了增强数据安全性,我们常常需要对敏感信息进行加密处理。MyBatis-Plus 提供了方便的配置加密功能,使我们能够对配置文件中的敏感信息进行加密和解密操作。本文将详细介绍如何实现 MyBatis-Plus 中的配置加密功能,并给出相应的代码示例。 首先,我们

    2024年02月07日
    浏览(14)
  • Mybatis-Plus+SpringBoot框架详解

    Mybatis-Plus+SpringBoot框架详解

    1、SpringBoot 简介 SpringBoot 提供了一种快速使用 Spring 的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。 2014 年 4 月,Spring Boot 1

    2023年04月08日
    浏览(13)
  • 批量插入或更新数据(MyBatis-plus框架)

    批量插入或更新数据(MyBatis-plus框架)

    目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础类,比如封装了BaseEntity去集成,那么这样使用会出问题 方式二:on duplicate key (推荐) 4.注意 5.常见问题  插入数据时,我们经常会遇到这

    2024年02月04日
    浏览(12)
  • Mybatis-Plus(三)--Mybatis-Plus配置和条件构造器

    在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情:https://mybatis.plus/config 【1】configLocation--自己单独的MyBatis配置的路径 SpringMVC的xml中写法: 【2】mapperLocations--MyBatis Mapper所对应的XML文件位置 如果你在Mapper中有自定义方法(XML中有自定义实现

    2024年02月15日
    浏览(18)
  • mybatis-plus配置日志实现方式

    Mybatis-plus是一个基于Mybatis的强大框架,可以帮助开发者快速地开发高质量的数据库应用程序。Mybatis-plus提供了许多配置项,其中一个重要的配置项是log-impl。 log-impl配置项定义了Mybatis-plus的日志实现方式,有两种可选的方式: SLF4J日志实现 如果你的项目已经使用了SLF4J日志框

    2024年02月09日
    浏览(8)
  • mybatis-plus在yml中配置

    pom配置 正常使用基础配置 扩展配置

    2024年02月13日
    浏览(17)
  • 如何在springboot中配置mybatis-plus

    如何在springboot中配置mybatis-plus

    MyBatis-Plus(简称为MP)是一个开源的Java持久层框架,它是在MyBatis基础上进行扩展的。他的出现是为了进一步简化和增强MyBatis的功能,提供更多便捷的特性和工具,以提高开发效率。 本文将阐述如何在springboot中配置和使用mybatis-plus 目录 1配置 2 使用 在pom.xml文件中配置mybati

    2024年02月13日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包