Mybatis-Plus 实现自定义SQL

482 阅读1分钟

一、注解方式实现自定义SQL

1.创建数据库表
2.创建SpringBoot项目,创建实体类
3.配置application.yml配置文件,配置数据源等相关信息。
3.在启动类上加上注解@MapperScan(basePackages = "dao接口的全限定路径包名")
4.在dao接口中,通过添加方法,在方法上添加Mybatis的相关注解实现自定义SQL,如下:
      
    //如果自定义的方法还希望能够使用MP提供的Wrapper条件构造器,则需要如下写法 
    @Select("SELECT * FROM user ${ew.customSqlSegment}")
    List<User> selectByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper);
 
    @Select("SELECT * FROM user where name = #{name}")
    List<User> selectByName(@Param("name") String name);

二、XML方式实现自定义SQL

1,2,3 同注解方式一样 
4. 在dao接口中,通过添加方法
5. 在application.yml中配置xml的配置文件路径

mybatis-plus:
  # 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml
  # 如果是放在resource目录 classpath:/mapper/**.xml
  mapper-locations: classpath:/mapper/**.xml

代码:

public interface UserMapper extends BaseMapper<User> {
 
    List<User> selectByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper);

    List<User> selectByName(@Param("name") String name);
    
}

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">
 
    <select id="selectByName" resultType="com.example.demo.model.User">
        SELECT * FROM user where name = #{name}
    </select>
 
    <select id="selectByMyWrapper" resultType="com.example.demo.model.User">
        SELECT * FROM user ${ew.customSqlSegment}
    </select>
    
</mapper>


说明:namespace代表mapper接口路径,标签中的id代表接口中方法的方法名,resultType代表接口方法的返回值类型