如何生成完全看项目,有的人是用管理系统生成,还有其他人可能是.....。博主这里是用插件生成
我是插件的话,先在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 {
@Autowired
private 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 {
@Autowired
private BchzdtMapper bchzdtMapper;
/**
* 根据编号和日期查询记录
* @param ksbh 编号
* @param date 查询日期
* @return 记录列表
*/
@Override
public 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 BCHZDT
WHERE KSBH = #{ksbh}
AND TRUNC(CREATE_TIME) = TRUNC(#{date})
<if test="true">
AND IS_DELETE = 0
</if>
ORDER BY CREATE_TIME DESC
</select>