MybatisPlus中在mapper.xml中编写原生sql
在Mybatis-Plus中编写原生SQL可以通过XML文件来实现,以下是详细的步骤和示例:
步骤:
创建Mapper接口:
- 定义一个Mapper接口,用于声明SQL方法。
javaimport com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.entity.User; public interface UserMapper extends BaseMapper<User> { // 自定义SQL方法 List<User> selectUsersByCustomSQL(); }
编写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 >= #{minAge} </select> </mapper>
- 说明:
namespace
属性指定了Mapper接口的全限定名。<select>
元素定义了一个查询语句,id
属性对应了Mapper接口中的方法名,resultType
属性指定了查询结果的映射类型。
在Service中调用Mapper方法:
- 在Service中注入Mapper接口,并调用其中定义的方法执行SQL查询。
javaimport 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); } }
使用动态SQL:
- Mybatis-Plus支持在XML中使用动态SQL语句,如
if
、choose
、foreach
等标签,可以根据条件动态拼接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>
- Mybatis-Plus支持在XML中使用动态SQL语句,如
注意事项:
- XML文件位置:XML文件通常放置在
resources/mapper
目录下,与Mapper接口的包路径对应。 - 参数传递:使用
#{}
语法可以传递参数,参数名需与方法中的参数名一致。 - 动态SQL:使用Mybatis-Plus提供的动态SQL标签可以根据条件动态生成SQL语句,提高灵活性和可读性。
通过以上步骤,可以在Mybatis-Plus中编写和使用原生SQL语句,满足复杂查询需求和特定业务场景的数据操作。