mybatis-plus配置databaseIdProvider根据数据库类型使用不同SQL

1,580 阅读1分钟

要配置 MyBatis-Plus 的 databaseIdProvider,需要进行以下步骤:

  1. application.ymlapplication.properties 配置文件中增加数据库厂商标识符的映射关系
mybatis-plus:
  configuration:
    # 设置获取数据库厂商标识符的方式为基于驱动的方法
    # 如果想使用自定义的类获取数据库厂商标识符,可以设置 type 属性为自定义类的全限定名
    # databaseIdProvider.type=com.example.MyDatabaseIdProvider
    # 设置不同数据库类型对应的厂商标识符
    # 这里以 MySQL 和 Oracle 数据库为例
    databaseId:
      mysql: mysql
      oracle: oracle
  1. 在 Spring Boot 启动类中添加 @MapperScan 注解,并指定要扫描的 Mapper 包路径
@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper")
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}
  1. 在 Mapper 接口方法上增加相应的 databaseId 属性
@Mapper
public interface UserDao extends BaseMapper<User> {
  @Select("SELECT * FROM user WHERE id = #{id}")
  @Options(useCache = true)
  User selectById(@Param("id") Long id);

  @Select("SELECT * FROM user WHERE name = #{name}")
  @Options(databaseId = "mysql")
  List<User> selectListByName(@Param("name") String name);
}

在上述代码中,@Options(databaseId = "mysql") 告诉 MyBatis-Plus 使用 MySQL 数据库对应的 SQL 语句。

  1. 在具体的 XML 映射文件中,可以通过 _databaseId 参数获取当前数据库类型,然后根据不同的数据库类型编写相应的 SQL 语句
<select id="selectById" resultType="User">
  SELECT * FROM user WHERE id = #{id}
  <if test="_databaseId=='mysql'">
    LIMIT 1
  </if>
</select>

在上述代码中,使用 _databaseId 参数获取当前数据库类型,然后根据不同的数据库类型编写相应的 SQL 语句。

实际使用时,需要根据自己的项目情况进行配置和调整。