springboot + mybatis支持多数据库

当在业务服务中需要支持多数据库时,虽然尽量使用标准sql,但还是难免出现多数据库不兼容的情况。例如对于达梦数据库在like时对于匹配字符串中的如果有通配符_或%需要转义改写为\_或\%,这在mysql、oracle、sql server都是没有问题的,但在达梦数据库中需要在之后加ESCAPE '\'才行。这时就需要能够知道当前连接的数据库是那种,如果是达梦数据库需要使用这种模式like #{var1} ESCAPE ‘\’

创建DatabaseIdProvider bean设置各数据库的别名

    /**
     * 自动识别使用的数据库类型,注意,此处的key为驱动自带的驱动名,不能更改,value可以更改
     * 在mapper.xml中_databaseId的值就是跟这里对应
     */
    @Bean
    public DatabaseIdProvider databaseIdProvider() {
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties properties = new Properties();
        //key为固有名字,更改后无法匹配,后面的value可以自定义
        properties.setProperty("Oracle", "oracle");
        properties.setProperty("MySQL", "mysql");
        properties.setProperty("DB2", "db2");
        properties.setProperty("Derby", "derby");
        properties.setProperty("H2", "h2");
        properties.setProperty("HSQL", "hsql");
        properties.setProperty("Informix", "informix");
        properties.setProperty("MS-SQL", "ms-sql");
        properties.setProperty("PostgreSQL", "postgresql");
        properties.setProperty("Sybase", "sybase");
        properties.setProperty("Hana", "hana");
        properties.setProperty("DM DBMS", "dm");
        properties.setProperty("Microsoft SQL Server", "mss");
        databaseIdProvider.setProperties(properties);
        return databaseIdProvider;
    }
  • 属性配置的key是数据库的产品名,可以通过如下方式获取到
String databaseProductName = connection.getMetaData().getDatabaseProductName();
  • 配置属性的value对应给数据库产品设置的别名。此别名的值对应到mybatis的内置参数_databaseId

在mapper.xml中判断当前连接的数据库使用特定sql

 <if test="_databaseId == 'dm'">
    AND rtt.table_name LIKE #{tableNameLike} ESCAPE '\'
</if>
<if test="_databaseId != 'dm'">
    AND rtt.table_name LIKE #{tableNameLike}
</if>
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Spring Boot + MyBatis Plus操作数据库需要进行以下几个步骤: 1.添加依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> ``` 2.配置数据源 在application.properties文件中添加数据源相关的配置信息,如下所示: ``` spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3.创建实体类 创建与数据库表对应的实体类,并使用注解进行属性与列的映射,如下所示: ``` @Data @NoArgsConstructor @AllArgsConstructor @TableName("user") public class User implements Serializable { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; } ``` 4.创建Mapper接口 创建Mapper接口,并继承MyBatis Plus提供的BaseMapper接口,如下所示: ``` public interface UserMapper extends BaseMapper<User> { } ``` 5.使用Mapper接口操作数据库 在Service或Controller层中使用UserMapper接口进行数据库的操作,如下所示: ``` @Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.selectById(id); } public List<User> getUserList() { return userMapper.selectList(null); } public int addUser(User user) { return userMapper.insert(user); } public int updateUser(User user) { return userMapper.updateById(user); } public int deleteUser(Long id) { return userMapper.deleteById(id); } ``` 以上就是使用Spring Boot + MyBatis Plus操作数据库的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值