MybatisPlus中在mapper.xml中编写原生sql

在Mybatis-Plus中编写原生SQL可以通过XML文件来实现,以下是详细的步骤和示例:

步骤:

  1. 创建Mapper接口

    • 定义一个Mapper接口,用于声明SQL方法。
    java
    import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.entity.User; public interface UserMapper extends BaseMapper<User> { // 自定义SQL方法 List<User> selectUsersByCustomSQL(); }
  2. 编写Mapper XML文件

    • 创建与Mapper接口对应的XML文件(通常与接口在同一包路径下),并在XML文件中编写SQL语句。
    xml
    <!-- 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.demo.mapper.UserMapper"> <!-- 自定义SQL语句 --> <select id="selectUsersByCustomSQL" resultType="com.example.demo.entity.User"> SELECT * FROM user WHERE age &gt;= #{minAge} </select> </mapper>
    • 说明
      • namespace 属性指定了Mapper接口的全限定名。
      • <select> 元素定义了一个查询语句,id 属性对应了Mapper接口中的方法名,resultType 属性指定了查询结果的映射类型。
  3. 在Service中调用Mapper方法

    • 在Service中注入Mapper接口,并调用其中定义的方法执行SQL查询。
    java
    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> getUsersByCustomSQL(int minAge) { return userMapper.selectUsersByCustomSQL(minAge); } }
  4. 使用动态SQL

    • Mybatis-Plus支持在XML中使用动态SQL语句,如ifchooseforeach等标签,可以根据条件动态拼接SQL语句。
    xml
    <!-- 示例:根据条件查询用户 --> <select id="selectUsersByCondition" resultType="com.example.demo.entity.User"> SELECT * FROM user <where> <if test="username != null"> AND username = #{username} </if> <if test="email != null"> AND email = #{email} </if> </where> </select>

注意事项:

  • XML文件位置:XML文件通常放置在resources/mapper目录下,与Mapper接口的包路径对应。
  • 参数传递:使用#{}语法可以传递参数,参数名需与方法中的参数名一致。
  • 动态SQL:使用Mybatis-Plus提供的动态SQL标签可以根据条件动态生成SQL语句,提高灵活性和可读性。

通过以上步骤,可以在Mybatis-Plus中编写和使用原生SQL语句,满足复杂查询需求和特定业务场景的数据操作。