springboot集成phoenix调用hbase
1.环境
- jdk8
- hbase-2.1.0
2.新建springboot,添加pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.11</version>
</parent>
<groupId>com.demo</groupId>
<artifactId>springboot-phoenix-hbase</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>5.0.0-HBase-2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.配置application.yml
server:
port: 8080
spring:
datasource:
driver-class-name: org.apache.phoenix.jdbc.PhoenixDriver
url: jdbc:phoenix:afp-dev-bigdata1,afp-dev-bigdata2,afp-dev-bigdata3:2181/hbase
mybatis-plus:
mapper-locations: classpath*:com/demo/mapper/*.xml
type-aliases-package: com.demo.entity
4.添加hbase-site.xml配置
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
</configuration>
5.新建entity实体类
package com.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("US_POPULATION")
public class UsPopulation {
@TableId(type = IdType.INPUT,value = "ROWKEY")
private String rowkey;
@TableField("CF.STATE")
private String state;
@TableField("CF.CITY")
private String city;
@TableField("CF.POPULATION")
private long population;
}
6.新建UsPopulationMapper.java类
package com.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.demo.entity.UsPopulation;
import java.util.List;
public interface UsPopulationMapper extends BaseMapper<UsPopulation> {
List<UsPopulation> queryAll();
}
7.新建UsPopulationMapper.xml类
放到classpath下的com.demo.mapper包下
<?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.demo.mapper.UsPopulationMapper">
<select id="queryAll" resultType="com.demo.entity.UsPopulation">
select * from US_POPULATION
</select>
</mapper>
8.新建UsPopulationServiceImpl.java
package com.demo.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.demo.entity.UsPopulation;
import com.demo.mapper.UsPopulationMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UsPopulationServiceImpl extends ServiceImpl<UsPopulationMapper,UsPopulation> implements UsPopulationService{
@Autowired
private UsPopulationMapper usPopulationMapper;
@Override
public List<UsPopulation> findAll() {
return usPopulationMapper.queryAll();
}
}
9.新建UsPopulationService.java
package com.demo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.demo.entity.UsPopulation;
import java.util.List;
public interface UsPopulationService extends IService<UsPopulation> {
List<UsPopulation> findAll();
}
10.新建TestController.java
package com.demo.controller;
import com.demo.entity.UsPopulation;
import com.demo.service.UsPopulationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("test")
public class TestController {
@Autowired
private UsPopulationService usPopulationService;
@GetMapping("findAll")
public List<UsPopulation> findAll(){
return usPopulationService.findAll();
}
@GetMapping("selectList")
public List<UsPopulation> list(){
return usPopulationService.list();
}
}