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

mybatisplus 通过xml 定义接口

在 MyBatis-Plus 中,虽然它极大地简化了 CRUD 操作,提供了许多注解方式(如 @Select@Insert@Update@Delete)来直接在 Mapper 接口上定义 SQL 语句,但 MyBatis-Plus 仍然支持传统的 MyBatis 风格的 XML 配置方式来定义 SQL 语句。这种方式提供了更大的灵活性和复杂 SQL 的处理能力。

1. 创建 Mapper 接口

首先,你需要创建一个 Mapper 接口,这个接口会包含你需要执行的数据库操作方法。比如,你有一个 UserMapper 接口来操作用户表。

package com.example.mapper;  import com.baomidou.mybatisplus.core.mapper.BaseMapper;  
import com.example.entity.User;  
import org.apache.ibatis.annotations.Mapper;  @Mapper  
public interface UserMapper {  // 这里可以定义你自己的方法,然后通过 XML 映射 SQL  User selectUserById(Long id);  
}

2. 创建 XML 映射文件

然后,你需要为上述的 Mapper 接口创建一个 XML 映射文件。这个文件通常与 Mapper 接口在同一个包路径下,但位于 resources 目录下的 mapper 文件夹中(这个文件夹的路径可以根据你的项目配置来调整)。

例如,如果你的 Mapper 接口在 com.example.mapper 包下,那么 XML 文件可能位于 src/main/resources/mapper/UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
<mapper namespace="com.example.mapper.UserMapper">  <!-- 根据ID查询用户 -->  <select id="selectUserById" resultType="com.example.entity.User">  SELECT * FROM user WHERE id = #{id}  </select>  </mapper>

3. 配置 MyBatis-Plus

确保你的 MyBatis-Plus 配置已经正确设置了 mapper 文件的路径。如果你使用的是 Spring Boot 集成 MyBatis-Plus,那么通常这个配置会在 application.properties 或 application.yml 文件中自动配置好,因为 Spring Boot 会根据约定大于配置的原则来寻找 mapper 接口和 XML 文件。

但是,如果你需要手动配置,确保 MyBatis 的配置文件(如 mybatis-config.xml)中包含了 mapper 文件的路径,或者你的 Spring Boot 应用通过 @MapperScan 注解指定了 mapper 接口的扫描路径。

mybatis-plus:mapper-locations: classpath:mapper/*.xml

4. 使用 Mapper

一旦 Mapper 接口和 XML 文件配置完成,你就可以在你的服务层或控制器中注入 UserMapper 并调用其方法来执行数据库操作了。

@Service  
public class UserService {  @Autowired  private UserMapper userMapper;  public User getUserById(Long id) {  return userMapper.selectUserById(id);  }  
}

这就是在 MyBatis-Plus 中通过 XML 文件定义 Mapper 接口的 SQL 语句的基本步骤。这种方式让你能够编写复杂的 SQL 语句,同时享受 MyBatis-Plus 提供的强大功能。

如果报错 Invalid bound statement (not found)  请参考

https://www.cnblogs.com/zhoushiya/p/12797240.html

http://www.lryc.cn/news/428744.html

相关文章:

  • 上周稼先社区的活动
  • day_45
  • SQL 时间盲注 (injection 第十六关)
  • nginx核心配置示例
  • 【面向对象】04面向对象三大特征之——继承
  • 计算机毕业设计Python+Flask弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 人工智能 NLP文本分类 数据可视化 大数据毕业设计
  • 用基础项目来理解spring的作用
  • Json-复杂泛型解析工具类
  • CLIP-VIT-L + Qwen 多模态学习笔记 -3
  • 如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎
  • DC-DC FB分压电阻计算 (MP1584 SY8205为例)
  • ESLint详解及在WebStorm中的应用
  • 数据库系统 第20节 云数据库
  • 用excel内容批量建立文件夹
  • SIRA-PCR: Sim-to-Real Adaptation for 3D Point Cloud Registration 论文解读
  • IDEA安装和使用(配图)
  • leetcode67. 二进制求和,简单模拟
  • Python:读写操作
  • 软体水枪在灭火工作中发挥什么作用_鼎跃安全
  • ES与MySQL数据同步实现方式
  • Prometheus 服务发现
  • 2.复杂度分析
  • ensp小实验(ospf+dhcp+防火墙)
  • Web服务器——————nginx篇
  • 【实战教程】一键升级CentOS 7.9.2009至OpenSSL 1.0.2u:加固你的Linux服务器安全防线!
  • React 使用ref属性调用子组件方法(也可以适用于父子传参)
  • Linux CentOS java JDK17
  • 迭代与递归
  • wo是如何克服编程学习中的挫折感的?
  • vue3基础ref,reactive,toRef ,toRefs 使用和理解