springboot中使用mybatis封装phoenix

1 篇文章 0 订阅
1 篇文章 0 订阅

使用hbase api来访问hbase的时候,如果字段太多,写起来的是很枯燥的

使用phoenix访问hbase,可以支持sql,相当于jdbc。用mybatis封装phoenix后,可以自动管理字段的映射,在一表超级多字段的情况下,可以减少工作量。

mybatis封装phoenix只需要一个配置类就可以搞定了
本项目是使用maven构建的
这里使用的是mybatis-plus

首先添加依赖

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.0.3</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.6</version>
        </dependency>

        <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>4.13.0-HBase-1.3</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.0.4.Final</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

创建一个config类来配置

@Configuration
@PropertySource(value = "classpath:application.yml")
@MapperScan(basePackages = {
        "com.ma.phoenix.test.dao"
    },
    sqlSessionFactoryRef = HBasePhoenixDataSourceConfig.HBASEPHOENIX_SQL_SESSION_FACTORY
)
public class HBasePhoenixDataSourceConfig {

    static final String HBASEPHOENIX_SQL_SESSION_FACTORY = "hbasePhoenixSqlSessionFactory";
    static final String MAPPER_LOCATION = "classpath:com/ma/phoenix/test/dao/*.xml";


    @Value("${spring.datasource.phoenix.jdbc-url}")
    private String url;

    @Value(value = "${spring.datasource.phoenix.driver-class-name}")
    private String driverClass;


    /**
     * 1.获取数据源
     * @return
     */
    @Bean(name = "hBasePhoenixDataSource")
    public DataSource hBasePhoenixDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        //dataSource.setConnectProperties(properties);
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClass);
        return dataSource;
    }

    /**
     * 2.创建事务管理
     * @param dataSource
     * @return
     */
    @Bean(name = "hbasePhoenixTransactionManager")
    public DataSourceTransactionManager hbasePhoenixTransactionManager(
            @Qualifier("hBasePhoenixDataSource")DataSource dataSource){
        return new DataSourceTransactionManager(dataSource);
    }

    /**
     * 3.创建 session工厂
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean(name = HBASEPHOENIX_SQL_SESSION_FACTORY)
    public SqlSessionFactory hbasePhoenixSqlSessionFactory(
            @Qualifier("hBasePhoenixDataSource")DataSource dataSource) throws Exception {
        MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources(HBasePhoenixDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }

    public static void main(String[] args) throws IOException {
        Resource[] resources = new PathMatchingResourcePatternResolver()
                .getResources(HBasePhoenixDataSourceConfig.MAPPER_LOCATION);
        System.out.println(resources.length);
    }


}

在配置文件application.yml中添加进数据源信息

spring:
  datasource:
    phoenix:
      jdbc-url: jdbc:phoenix:xx.xx.xx.xx
      driver-class-name: org.apache.phoenix.jdbc.PhoenixDriver

xx.xx.xx.xx 是hbase所在的服务器ip地址
在这里插入图片描述

@Configuration 是一定要的注解
@PropertySource(value = “classpath:application.yml”) 这个用来获取资源文件,可以是properties文件

@MapperScan中
basePackages 用来指定映射接口的包路径,可以写多个,用逗号","分割开
sqlSessionFactoryRef 指定创建的sqlSessionFactory
在这里插入图片描述
MybatisSqlSessionFactoryBean 还可以配置其他参数,例如指定mybatis的总配置文件的路径等等

main方法是用来获取MAPPER_LOCATION 下的xml映射文件数量的,由于不是放在资源文件夹中,需要在pom.xml文件中添加配置

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

到这里就ok啦

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot使用MyBatis可以通过以下步骤实现: 1. 添加MyBatisMyBatis-Spring依赖 在pom.xml文件添加以下依赖: ``` <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> ``` 2. 配置数据源 在application.properties文件配置数据源信息,例如: ``` spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=root ``` 3. 配置MyBatis 在application.properties文件配置MyBatis相关信息,例如: ``` mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity ``` 4. 创建Mapper接口 创建Mapper接口,例如: ``` public interface UserMapper { User selectUserById(Integer id); } ``` 5. 创建Mapper XML文件 在resources/mapper目录下创建Mapper XML文件,例如: ``` <?xml version="1." encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="selectUserById" resultType="com.example.demo.entity.User"> select * from user where id = #{id} </select> </mapper> ``` 6. 注入Mapper接口 在需要使用Mapper接口的地方注入Mapper接口,例如: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(Integer id) { return userMapper.selectUserById(id); } } ``` 以上就是在Spring Boot使用MyBatis的基本步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值