当前位置: 首页 > article >正文

MybatisPlus使用

文章目录

    • 起步配置:MybatisPlus的起的黄金
    • 常见配置:
    • 实际使用:
      • 实体类常见注解了解:
      • 定义mapper接口
      • Service层编写
      • Controller编写

起步配置:MybatisPlus的起的黄金

引入Mybatis的起步依赖(集成有Mybatis和MybatisPlus的所有功能):

<!-- mybatis-plus配置依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

常见配置:

mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml #mapper文件地址
  type-aliases-package: com.bdps.entity #实体类地址
  configuration:
    map-underscore-to-camel-case: true  # 开启下划线和驼峰命名自动映射
    cache-enabled: false # 是否开启二级缓存
  global-config:
    db-config:
      logic-delete-field: deleted #全据逻辑删除字段
      id-type: assign_id #id是由雪花算法生成
      logic-not-delete-value: 1 #逻辑未删除值
      logic-delete-value: 0 #逻辑已删除值
      update-strategy: not_null #更新策略:只更新非空字段

实际使用:

这里以新增管理员来展示如何使用,MybatisPlus语法就不讲述了

实体类常见注解了解:

:::info
MybatisPlus 中比较常用的几个注解如下:

• @TableName :用来指定表名

• @TableId :用来指定表中的主键字段信息

• @TableField :用来指定表中的普通字段信息

:::

:::info
IdType 枚举:

• AUTO :数据库自增长

• INPUT :通过 set 方法自行输入

• ASSIGN_ID :分配 ID ,接口 IdentifierGenerator 的方法 nextId 来

生成 id ,默认实现类为 DefaultIdentifierGenerator 雪花算法

使用 @TableField 的常见场景:

• 成员变量名与数据库字段名不一致

• 成员变量名以 is 开头,且是布尔值

• 成员变量名与数据库关键字冲突

• 成员变量不是数据库字段

:::

列如:

package com.bdps.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("admin")
public class Admin implements Serializable {

    private static final long serialVersionUID = 1L;

    //管理员id
    @TableId(value = "id", type = IdType.AUTO)
    private String id;

    //管理员姓名
    private String name;

    //管理员账号
    private String account;

    //管理员密码
    private String password;

    //管理员手机号码
    private String phone;

    //管理员性别
    private String sex;

    //创建时间
    private String createTime;

    //修改时间
    private String updateTime;

    //逻辑删除
    @TableLogic
    private Integer deleted;

}

定义mapper接口

根据项目的所需的实体类定义mapper

mapper接口基础继承BaseMapper

package com.bdps.mapper;

import com.baomidou.mybatisplus.core.mapper.Mapper;
//管理员mapper
public interface AdminMapper extends Mapper<AdminMapper> {
}

Service层编写

接口这里需要继承IService

//管理员
public interface AdminService extends IService<Admin> {
    /**
     * 新增管理员
     * @param adminDTO
     */
    void saveAdmin(AdminDTO adminDTO);
}

实现类这里继承ServiceImpl<AdminMapper, Admin>,并实现接口

@Service
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService {
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private JwtProperties jwtProperties;
    @Autowired
    private AdminMapper adminMapper;

    /**
     * 新增管理员
     * @param adminDTO
     */
    @Override
    public void saveAdmin(AdminDTO adminDTO) {
        //先校验是否存在该账号或者手机号码
        Admin duplicateAdmin=this.getOne(new QueryWrapper<Admin>()
                .eq(PropertyNames.ACCOUNT,adminDTO.getAccount())
                .or()
                .eq(PropertyNames.PHONE,adminDTO.getPhone()));
        if (duplicateAdmin!=null){
            if (duplicateAdmin.getAccount().equals(adminDTO.getAccount())){
                throw new HasException(MessageConstant.ACCOUNT_HAS_EXISTED);
            }
            else if(duplicateAdmin.getPhone().equals(adminDTO.getPhone())){
                throw new HasException(MessageConstant.PHONE_HAS_EXISTED);
            }
        }

        //对象属性拷贝
        Admin admin=new Admin();
        BeanUtils.copyProperties(adminDTO,admin);

        //对密码进行密码加密
        admin.setPassword(DigestUtils.md5DigestAsHex(admin.getPassword().getBytes()));
        //设置创建时间和修改时间
        admin.setCreateTime(LocalDateTime.now());
        admin.setUpdateTime(LocalDateTime.now());

        adminMapper.insert(admin);

    }

}

Controller编写

这里就正常写就可以了

public class adminController {

    @Autowired
    private AdminService adminService;

    @Autowired
    private  RedisUtil redisUtil;

    @Autowired
    private ConfigrarionBean config;
    /**
     * 新增管理员
     * @param adminDTO
     * @return
     */
    @PostMapping
    @ApiOperation("新增管理员")
    public Result saveAdmin(@RequestBody AdminDTO adminDTO){
        log.info("新增管理员:{}",adminDTO);
        adminService.saveAdmin(adminDTO);
        return Result.success();
    }
  }


http://www.kler.cn/a/452035.html

相关文章:

  • 从数据仓库到数据中台再到数据飞轮:电信行业的数据技术进化史
  • Qt creator ,语言家功能缺失解决方法
  • android sqlite 数据库简单封装示例(java)
  • leetcode之hot100---2两数相加(C++)
  • 大语言模型学习工具及资源总结和落地应用
  • 【Object字段缺失】JS的对象在更新后发现Key值消失
  • 第一节:电路连接【51单片机-L298N-步进电机教程】
  • postman去除更新
  • PyCharm专业实验2 查找算法实现与比较
  • RK3588在Android13/14如何查看GPU,NPU,DDR,RGA数据
  • 双指针——快乐数
  • Echarts+vue电商平台数据可视化——后台实现笔记
  • 【每日学点鸿蒙知识】大图性能问题、WebView加载网页问题、H5页面数据更新问题、安全控件位置影响数据保存、企业内部应用发布
  • 双重判定锁来解决缓存击穿问题
  • VTK知识学习(27)- 图像基本操作(二)
  • Cyberchef实用功能之-批量提取XML数据文件的字段内容
  • Win10提示“缺少fbgemm.dll”怎么办?缺失fbgemm.dll文件的修复方法来啦!
  • 4-pandas常用操作
  • LeetCode:257. 二叉树的所有路径
  • 一、后端到摄像头(监控摄像头IOT)
  • Docker--宿主机执行docker容器的命令
  • 【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(三):基于BT行为树实现复杂敌人BOSS-AI
  • MVC 参考手册
  • Flink中并行度和slot的关系——任务和任务槽
  • VUE前端实现防抖节流 Lodash
  • TCN-Transformer+LSTM多变量回归预测(Matlab)添加气泡图、散点密度图