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

mybatis-plus实操

如何生成完全看项目,有的人是用管理系统生成,还有其他人可能是.....。博主这里是用插件生成

我是插件的话,先在ide连接上数据源,然后对表右键,直接来到下面这个步骤,

第一次是新增6个文件,我们写接口,第一次是要动六个文件的,第一个是Controller层,第二个是Service接口(注册方法给Controller调用的),第三个是ServiceImpl实现类,第四个是实体类,对应数据库表(可以当作前端接受参数类型),第五个是Mapper.xml文件,在xml文件后面要写sql查询的,第六个是Mapper.java文件(在这里写@DS('数据源名称'),这里的方法名称与xml文件的sql对应的id

 再进行下面选择 ,注意项目用的mybatis版本

然后会生成下面这些

 resources下的xml根据你的application.ym里面的  mybatis-plus 的 mapper-locations(xml 扫描路径)来放,我这边是resources的mapper,实体类路径就是 type-aliases-package

 注意修改BchzdtMapper.xml的  namespace  和  type  ,namespace 的路径是另一个跟xml同命的java文件,type就是数据库的实体类。

接下来进入实操练习吧,写一个接口,前端传编号和日期。都是必填参数

controller控制层

package com.yupi.controller;import com.yupi.entity.Bchzdt;
import com.yupi.entity.FebsResponse;
import com.yupi.service.BchzdtService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;import java.util.Date;
import java.util.List;/*** 管理控制器*/
@RestController
@RequestMapping("/api/bchzdt")
public class BchzdtController {@Autowiredprivate BchzdtService bchzdtService;/*** 根据编号和日期查询交接班记录* @param ksbh 编号,不能为空* @param date 查询日期,格式:yyyy-MM-dd HH:mm:ss,不能为空* @return 查询结果*/@GetMapping("/query")public FebsResponse queryByKsbh(@RequestParam(required = true) Long ksbh,@RequestParam(required = true) @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {if (ksbh == null) {return new FebsResponse().fail().message("编号不能为空");}if (date == null) {return new FebsResponse().fail().message("查询日期不能为空");}try {List<Bchzdt> bchzdtList = bchzdtService.findByKsbhAndDate(ksbh, date);return new FebsResponse().success().data(bchzdtList).message("查询成功");} catch (Exception e) {return new FebsResponse().fail().message("查询失败:" + e.getMessage());}}
}

BchzdtService.java  实现类的接口

package com.yupi.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.yupi.entity.Bchzdt;import java.util.Date;
import java.util.List;/**
* @author
* @description 针对表【BCHZDT】的数据库操作Service
* @createDate 2025-05-14 16:08:19
*/
public interface BchzdtService extends IService<Bchzdt> {/*** 根据编号和日期查询记录* @param ksbh 编号* @param date 查询日期* @return 记录列表*/List<Bchzdt> findByKsbhAndDate(Long ksbh, Date date);
}

实现类  BchzdtServiceImpl.java

package com.yupi.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yupi.entity.Bchzdt;
import com.yupi.mapper.BchzdtMapper;
import com.yupi.service.BchzdtService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.Date;
import java.util.List;/**
* @author 
* @description 针对表【BCHZDT】的数据库操作Service实现
* @createDate 2025-05-14 16:08:19
*/
@Service
public class BchzdtServiceImpl extends ServiceImpl<BchzdtMapper, Bchzdt>implements BchzdtService {@Autowiredprivate BchzdtMapper bchzdtMapper;/*** 根据编号和日期查询记录* @param ksbh 编号* @param date 查询日期* @return 记录列表*/@Overridepublic List<Bchzdt> findByKsbhAndDate(Long ksbh, Date date) {return bchzdtMapper.findByKsbhAndDate(ksbh, date);}
}

BchzdtMapper.xml

package com.yupi.mapper;import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yupi.entity.Bchzdt;
import org.apache.ibatis.annotations.Param;import java.util.Date;
import java.util.List;/**
* @author 
* @description 针对表【BCHZDT】的数据库操作Mapper
* @createDate 2025-05-14 16:08:19
* @Entity generator.entity.Bchzdt
*/
@DS("emr") // 指定使用emr数据源
public interface BchzdtMapper extends BaseMapper<Bchzdt> {/*** 根据编号和日期查询记录* @param ksbh 编号* @param date 查询日期* @return 记录列表*/List<Bchzdt> findByKsbhAndDate(@Param("ksbh") Long ksbh, @Param("date") Date date);
}
mybatis操作数据库的方式
查询方式是否推荐适用场景
XML SQL 定义推荐复杂查询、性能优化
注解 SQL推荐简单查询
LambdaQueryWrapper推荐类型安全、链式调用
QueryWrapper推荐动态字段
自定义 SQL推荐复杂业务逻辑
Stream 过滤不推荐小数据量时可用
分页查询推荐分页展示
聚合函数 推荐统计、计算
动态 SQL 推荐条件组合
多表查询推荐关联数据查询

最后在BchzdtMapper.xml添加sql查询语句

<!-- 根据编号和日期查询记录 --><select id="findByKsbhAndDate" resultMap="BaseResultMap">SELECT<include refid="Base_Column_List"/>FROM BCHZDTWHERE KSBH = #{ksbh}AND TRUNC(CREATE_TIME) = TRUNC(#{date})<if test="true">AND IS_DELETE = 0</if>ORDER BY CREATE_TIME DESC</select>

相关文章:

  • 【Nextcloud】使用 LNMP 架构搭建私有云存储:Nextcloud 实战指南
  • TDesign AI Chat - Vue3.x 可用!腾讯出品的 AIGC 交互对话组件,免费开源、包含设计资源
  • MyBatis入门指南
  • Java微服务架构实战:Spring Boot与Spring Cloud的深度整合
  • 代码审查服务费用受哪些因素影响?如何确定合理报价?
  • React 个人笔记 Hooks编程
  • C#接口的setter或getter的访问性限制
  • 论文阅读--Logical quantum processor based on reconfigurable atom arrays
  • Model 速通系列(一)nanoGPT
  • 智能开发工具PhpStorm v2025.1——增强AI辅助编码功能
  • uniapp打包H5,输入网址空白情况
  • 设计模式的原理及深入解析
  • Cursor日常配置指南
  • 【C++进阶篇】AVL树的实现(赋源码)
  • 元注解(Meta-Annotations)详解
  • 双条件拆分工作表,一键生成独立工作簿-Excel易用宝
  • Python将Excel单元格某一范围生成—截图(进阶版—带样式+批量+多级表头)
  • reserve学习笔记(花指令)
  • W3电力线载波通信技术
  • 项目删除了,为什么vscode中的git还是存在未提交记录,应该怎么删除掉
  • 国家发改委:正在会同有关方面,加快构建统一规范、协同共享、科学高效的信用修复制度
  • 《风林火山》千呼万唤始出来,戛纳首映后口碑崩盘?
  • 原核试验基地司令员范如玉逝世,从事核试验研究超40年
  • 乌克兰官员与法德英美四国官员举行会谈
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 手机表面细菌菌落总数可能比马桶高10倍,医生详解如何洗手