一、前言
前面我们在《Spring Boot JdbcTemplate配置Druid多数据源》、《Spring-Boot-MyBatis配置Druid多数据源》中整合了oracle和mysql,今天我们使用在Spring Boot中JdbcTemplate与Mybatis使用PostgreSQL,具体过程如下:
二、JdbcTemplate中整合PostgreSQL
我们这里就在《Spring Boot JdbcTemplate配置Druid多数据源》基础上进行改造。
2.1 引入依赖
<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><scope>runtime</scope></dependency>2.2 修改application.yml
这里我们的数据使用 《Spring-Boot整合JPA与PostgreSQL》中的数据,需要在application.yml里面新增如下PostgreSQL的连接等信息。
pgsql:type:com.alibaba.druid.pool.DruidDataSourcedriver-class-name:org.postgresql.Driverurl:jdbc:postgresql://localhost:5432/springboot?currentSchema=springusername:springpassword:spring#123在配置数据源配置中新增如下代码:
@Bean(name="pgsqldatasource")@ConfigurationProperties("spring.datasource.druid.pgsql")publicDataSourcedataSourceThree(){returnDruidDataSourceBuilder.create().build();}@Bean(name="pgsqlJdbcTemplate")publicJdbcTemplatepgsqlJdbcTemplate(@Qualifier("pgsqldatasource")DataSourcedataSource){returnnewJdbcTemplate(dataSource);}2.3 编码
新增PgsqlStudentDao.java
publicinterfacePgsqlStudentDao{List<Map<String,Object>>getAllStudents();}新增PgsqlStudentDaoImpl.java
@RepositorypublicclassPgsqlStudentDaoImplimplementsPgsqlStudentDao{@Autowired@Qualifier("pgsqlJdbcTemplate")privateJdbcTemplatejdbcTemplate;@OverridepublicList<Map<String,Object>>getAllStudents(){returnthis.jdbcTemplate.queryForList("select * from student");}}修改StudentService.java
publicinterfaceStudentService{List<Map<String,Object>>getAllStudentsWithMysql();List<Map<String,Object>>getAllStudentsWithOracle();List<Map<String,Object>>getAllStudentsWithPgsql();}修改StudentServiceImpl.java
@Service("studentService")publicclassStudentServiceImplimplementsStudentService{@AutowiredprivateOracleStudentDaooracleStudentDao;@AutowiredprivateMysqlStudentDaomysqlStudentDao;@AutowiredprivatePgsqlStudentDaopgsqlStudentDao;@OverridepublicList<Map<String,Object>>getAllStudentsWithMysql(){returnthis.mysqlStudentDao.getAllStudents();}@OverridepublicList<Map<String,Object>>getAllStudentsWithOracle(){returnthis.oracleStudentDao.getAllStudents();}@OverridepublicList<Map<String,Object>>getAllStudentsWithPgsql(){returnthis.pgsqlStudentDao.getAllStudents();}}修改TestController.java
@RestControllerpublicclassTestController{@AutowiredprivateStudentServicestudentService;@RequestMapping(value="/getAllStudentsWithMysql",method=RequestMethod.GET)publicList<Map<String,Object>>getAllStudentsWithMysql(){returnthis.studentService.getAllStudentsWithMysql();}@RequestMapping(value="/getAllStudentsWithOracle",method=RequestMethod.GET)publicList<Map<String,Object>>getAllStudentsWithOracle(){returnthis.studentService.getAllStudentsWithOracle();}@RequestMapping(value="/getAllStudentsWithPgsql",method=RequestMethod.GET)publicList<Map<String,Object>>getAllStudentsWithPgsql(){returnthis.studentService.getAllStudentsWithPgsql();}}2.4 测试
数据库新增几条记录如下:
启动项目,浏览器访问:http://localhost:8080/getAllStudentsWithPgsql
三、Mybatis中整合PostgreSQL
我们这里就在《Spring-Boot-MyBatis配置Druid多数据源》基础上进行改造。
3.1 引入依赖
<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><scope>runtime</scope></dependency>3.2 修改application.yml
pgsql:type:com.alibaba.druid.pool.DruidDataSourcedriver-class-name:org.postgresql.Driverurl:jdbc:postgresql://localhost:5432/springboot?currentSchema=springusername:springpassword:spring#123新增PgsqlDatasourceConfig.java
@Configuration@MapperScan(basePackages=PgsqlDatasourceConfig.PACKAGE,sqlSessionFactoryRef="pgsqlSqlSessionFactory")publicclassPgsqlDatasourceConfig{// mysqldao扫描路径staticfinalStringPACKAGE="com.wno704.boot.pgsqldao";// mybatis mapper扫描路径staticfinalStringMAPPER_LOCATION="classpath:mapper/pgsql/*.xml";@Bean(name="pgsqldatasource")@ConfigurationProperties("spring.datasource.druid.pgsql")publicDataSourcepgsqlDatasource(){returnDruidDataSourceBuilder.create().build();}@Bean(name="pgsqlTransactionManager")publicDataSourceTransactionManagerpgsqlTransactionManager(){returnnewDataSourceTransactionManager(pgsqlDatasource());}@Bean(name="pgsqlSqlSessionFactory")publicSqlSessionFactorypgsqlSqlSessionFactory(@Qualifier("pgsqldatasource")DataSourcedataSource)throwsException{finalSqlSessionFactoryBeansessionFactory=newSqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);//如果不使用xml的方式配置mapper,则可以省去下面这行mapper location的配置。sessionFactory.setMapperLocations(newPathMatchingResourcePatternResolver().getResources(PgsqlDatasourceConfig.MAPPER_LOCATION));returnsessionFactory.getObject();}}3.3 编码
新增PgsqlStudentMapper.java
@Mapper@Repository("pgsqlStudentMapper")publicinterfacePgsqlStudentMapper{List<Map<String,Object>>getAllStudents();}新增PgsqlStudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.wno704.boot.pgsqldao.PgsqlStudentMapper"><selectid="getAllStudents"resultType="java.util.Map">select * from student</select></mapper>修改StudentService.java
publicinterfaceStudentService{List<Map<String,Object>>getAllStudentsWithMysql();List<Map<String,Object>>getAllStudentsWithOracle();List<Map<String,Object>>getAllStudentsWithPgsql();}修改StudentServiceImpl.java
@Service("studentService")publicclassStudentServiceImplimplementsStudentService{@AutowiredprivateMysqlStudentMappermysqlStudentMapper;@AutowiredprivateOracleStudentMapperoracleStudentMapper;@AutowiredprivatePgsqlStudentMapperpgsqlStudentMapper;@OverridepublicList<Map<String,Object>>getAllStudentsWithMysql(){returnthis.mysqlStudentMapper.getAllStudents();}@OverridepublicList<Map<String,Object>>getAllStudentsWithOracle(){returnthis.oracleStudentMapper.getAllStudents();}@OverridepublicList<Map<String,Object>>getAllStudentsWithPgsql(){returnthis.pgsqlStudentMapper.getAllStudents();}}修改TestController.java
@RestControllerpublicclassTestController{@AutowiredprivateStudentServicestudentService;@RequestMapping(value="/getAllStudentsWithMysql",method=RequestMethod.GET)publicList<Map<String,Object>>getAllStudentsWithMysql(){returnthis.studentService.getAllStudentsWithMysql();}@RequestMapping(value="/getAllStudentsWithOracle",method=RequestMethod.GET)publicList<Map<String,Object>>getAllStudentsWithOracle(){returnthis.studentService.getAllStudentsWithOracle();}@RequestMapping(value="/getAllStudentsWithPgsql",method=RequestMethod.GET)publicList<Map<String,Object>>getAllStudentsWithPgsql(){returnthis.studentService.getAllStudentsWithPgsql();}}3.4 测试
启动项目,浏览器访问:http://localhost:8080/getAllStudentsWithPgsql