SpringBoot+Mybatis 通过databaseIdProvider支持多数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot+Mybatis 通过databaseIdProvider支持多数据库相关的知识,希望对你有一定的参考价值。
参考技术A 本人最近接到一个任务,将一个系统改成同时兼容Oracle和PostgreSQL(原来是仅支持Oracle)。虽然大部分的sql语句通用,但是还有许多语法存在差异,所以我们可以通过mybatis自身提供的databaseIdProvider解决这个问题,这里记录一下过程。通过配置文件开启mysql支持或者postgresql支持
SpringBoot整合Mybatis
1、依赖在上一篇随笔中已经导入,这里不再展示
2、数据源信息也上一篇随笔中已经配置过
3、编写pojo对象MUser
1 package com.offcn.pojo; 2 3 import lombok.AllArgsConstructor; 4 import lombok.Data; 5 import lombok.NoArgsConstructor; 6 7 import javax.persistence.*; 8 9 @Entity 10 @Data 11 @NoArgsConstructor 12 @AllArgsConstructor 13 @Table(name = "user") 14 public class MUser { 15 16 @Id 17 @GeneratedValue(strategy = GenerationType.IDENTITY) 18 private Integer uid; 19 private String uname; 20 private String pwd; 21 private String gender; 22 private String phone; 23 }
4、MUserMapper接口
1 package com.offcn.mapper; 2 3 import com.offcn.pojo.MUser; 4 5 import java.util.List; 6 7 public interface MUserMapper { 8 List<MUser> getUserList(); 9 }
5、MUserMapper.xml映射文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="com.offcn.mapper.MUserMapper"> 6 <select id="getUserList" resultType="com.offcn.pojo.MUser"> 7 select * from user 8 </select> 9 </mapper>
6、在主启动类上配置扫描mybatis的包
1 package com.offcn; 2 3 import org.mybatis.spring.annotation.MapperScan; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.autoconfigure.SpringBootApplication; 6 7 /** 8 * @author yy 9 * @date 2019/11/5 9:56 10 */ 11 @MapperScan("com.offcn.mapper") 12 @SpringBootApplication 13 public class HelloApplication { 14 public static void main(String[] args) { 15 SpringApplication.run(HelloApplication.class,args); 16 } 17 }
如果启动错误可以将映射文件放在resources文件目录下试试
以上是关于SpringBoot+Mybatis 通过databaseIdProvider支持多数据库的主要内容,如果未能解决你的问题,请参考以下文章