这里分享一下Springboot整合phoenix+mybatis的简单示例,项目结构如下:
1.首先在hbase中创建一张表,sql语句如下:
CREATE TABLE IF NOT EXISTS "user"( id VARCHAR primary key, username VARCHAR, age VARCHAR);
2.在pom.xml中引入相应的坐标;
org.springframework.boot spring-boot-starter-parent2.6.0 org.springframework.boot spring-boot-starter-weborg.mybatis.spring.boot mybatis-spring-boot-starter2.1.0 org.slf4j slf4j-log4j12org.apache.phoenix phoenix-core4.14.0-Hbase-1.2 org.slf4j slf4j-log4j12org.projectlombok lombokRELEASE compile
3.在application.yml中导入相应的配置;
spring:
datasource:
driverClassName: org.apache.phoenix.jdbc.PhoenixDriver
url:jdbc:phoenix: IP地址:2181
mybatis:
mapper-locations: classpath:mappers/*.xml
4.User实体类代码如下:
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
private String userId;
private String userName;
private String age;
}
5.UserMapper.xml代码如下:
UPSERT INTO "user" VALUES (#{userId}, #{userName}, #{age})
6.UserMapper接口代码如下:
@Mapper
public interface UserMapper {
int addUser(User user);
User getUserById(String userId);
List getAllUser();
}
7.启动类:
@SpringBootApplication
public class Appstart {
public static void main(String[] args) {
ConfigurableApplicationContext app = SpringApplication.run(Appstart.class, args);
UserMapper userMapper = app.getBean(UserMapper.class);
//添加
userMapper.addUser(new User("1","xiaochen","7"));
userMapper.addUser(new User("2","xiaowu","7"));
userMapper.addUser(new User("3","xiaoli","7"));
//查询某个用户
User userById = userMapper.getUserById("1");
System.out.println(userById);
//查询所有
List allUser = userMapper.getAllUser();
System.out.println(allUser);
}
}
总结:整体感觉和整合mysql、oracle这些数据库类似,修改驱动,url及相应sql即可;但整合phoenix有一点不好,就是坐标引入了好多jar包。最后处理一下日志中的报错:
报错1:
找不到winutils.exe,下载hadoop-common-2.2.0-bin-master.zip 解压后,在代码中添加如下系统配置:
System.setProperty("hadoop.home.dir","hadoop-common的目录\hadoop-common-2.2.0-bin-master");
报错2:
找到ConnectionQueryServicesImpl 拷贝一份该类源码,复制到项目中,注释掉该日志打印代码。



