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);
}
查询方式 | 是否推荐 | 适用场景 |
---|---|---|
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>