如何生成完全看項目,有的人是用管理系統生成,還有其他人可能是.....。博主這里是用插件生成
我是插件的話,先在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>