spring/spring boot+mybatis+phoenix
This commit is contained in:
		
							
								
								
									
										56
									
								
								code/Phoenix/spring-boot-mybatis-phoenix/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								code/Phoenix/spring-boot-mybatis-phoenix/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| <?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.1.4.RELEASE</version> | ||||
|         <relativePath/> <!-- lookup parent from repository --> | ||||
|     </parent> | ||||
|     <groupId>com.heibaiying</groupId> | ||||
|     <artifactId>spring-boot-mybatis-phoenix</artifactId> | ||||
|     <version>0.0.1-SNAPSHOT</version> | ||||
|     <name>spring-boot-mybatis-phoenix</name> | ||||
|     <description>mybatis project for Spring Boot</description> | ||||
|  | ||||
|     <properties> | ||||
|         <java.version>1.8</java.version> | ||||
|     </properties> | ||||
|  | ||||
|     <dependencies> | ||||
|         <!--spring 1.5 x 以上版本对应 mybatis 1.3.x (1.3.1) | ||||
|         关于更多spring-boot 与 mybatis 的版本对应可以参见 <a href="http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/">--> | ||||
|         <dependency> | ||||
|             <groupId>org.mybatis.spring.boot</groupId> | ||||
|             <artifactId>mybatis-spring-boot-starter</artifactId> | ||||
|             <version>1.3.2</version> | ||||
|         </dependency> | ||||
|         <!--phoenix core--> | ||||
|         <dependency> | ||||
|             <groupId>org.apache.phoenix</groupId> | ||||
|             <artifactId>phoenix-core</artifactId> | ||||
|             <version>4.14.0-cdh5.14.2</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.projectlombok</groupId> | ||||
|             <artifactId>lombok</artifactId> | ||||
|             <optional>true</optional> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-test</artifactId> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
|  | ||||
|     <build> | ||||
|         <plugins> | ||||
|             <plugin> | ||||
|                 <groupId>org.springframework.boot</groupId> | ||||
|                 <artifactId>spring-boot-maven-plugin</artifactId> | ||||
|             </plugin> | ||||
|         </plugins> | ||||
|     </build> | ||||
|  | ||||
| </project> | ||||
| @@ -0,0 +1,14 @@ | ||||
| package com.heibaiying.springboot; | ||||
|  | ||||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
|  | ||||
| @SpringBootApplication | ||||
| public class SpringBootMybatisApplication { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         SpringApplication.run(SpringBootMybatisApplication.class, args); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| @@ -0,0 +1,18 @@ | ||||
| package com.heibaiying.springboot.bean; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import lombok.ToString; | ||||
|  | ||||
| @Data | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| @ToString | ||||
| public class USPopulation { | ||||
|  | ||||
|     private String state; | ||||
|     private String city; | ||||
|     private long population; | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,24 @@ | ||||
| package com.heibaiying.springboot.dao; | ||||
|  | ||||
| import com.heibaiying.springboot.bean.USPopulation; | ||||
| import org.apache.ibatis.annotations.*; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| @Mapper | ||||
| public interface PopulationDao { | ||||
|  | ||||
|     @Select("SELECT * from us_population") | ||||
|     List<USPopulation> queryAll(); | ||||
|  | ||||
|     @Insert("UPSERT INTO us_population VALUES( #{state}, #{city}, #{population} )") | ||||
|     void save(USPopulation USPopulation); | ||||
|  | ||||
|     @Select("SELECT * FROM us_population WHERE state=#{state} AND city = #{city}") | ||||
|     USPopulation queryByStateAndCity(String state, String city); | ||||
|  | ||||
|  | ||||
|     @Delete("DELETE FROM us_population WHERE state=#{state} AND city = #{city}") | ||||
|     void deleteByStateAndCity(String state, String city); | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,32 @@ | ||||
| spring: | ||||
|   datasource: | ||||
|     #zookeeper地址 | ||||
|     url: jdbc:phoenix:192.168.0.105:2181 | ||||
|     driver-class-name: org.apache.phoenix.jdbc.PhoenixDriver | ||||
|  | ||||
|     # 如果不想配置对数据库连接池做特殊配置的话,以下关于连接池的配置就不是必须的 | ||||
|     # spring-boot 2.X 默认采用高性能的 Hikari 作为连接池 更多配置可以参考 https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby | ||||
|     type: com.zaxxer.hikari.HikariDataSource | ||||
|     hikari: | ||||
|       # 池中维护的最小空闲连接数 | ||||
|       minimum-idle: 10 | ||||
|       # 池中最大连接数,包括闲置和使用中的连接 | ||||
|       maximum-pool-size: 20 | ||||
|       # 此属性控制从池返回的连接的默认自动提交行为。默认为true | ||||
|       auto-commit: true | ||||
|       # 允许最长空闲时间 | ||||
|       idle-timeout: 30000 | ||||
|       # 此属性表示连接池的用户定义名称,主要显示在日志记录和JMX管理控制台中,以标识池和池配置。 默认值:自动生成 | ||||
|       pool-name: custom-hikari | ||||
|       #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟 | ||||
|       max-lifetime: 1800000 | ||||
|       # 数据库连接超时时间,默认30秒,即30000 | ||||
|       connection-timeout: 30000 | ||||
|       # 连接测试sql 这个地方需要根据数据库方言差异而配置 例如 oracle 就应该写成  select 1 from dual | ||||
|       connection-test-query: SELECT 1 | ||||
|  | ||||
| # mybatis 相关配置 | ||||
| mybatis: | ||||
|   configuration: | ||||
|     # 是否打印sql语句 调试的时候可以开启 | ||||
|     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | ||||
| @@ -0,0 +1,53 @@ | ||||
| package com.heibaiying.springboot; | ||||
|  | ||||
| import com.heibaiying.springboot.bean.USPopulation; | ||||
| import com.heibaiying.springboot.dao.PopulationDao; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest | ||||
| public class PopulationTest { | ||||
|  | ||||
|     @Autowired | ||||
|     private PopulationDao populationDao; | ||||
|  | ||||
|     @Test | ||||
|     public void queryAll() { | ||||
|         List<USPopulation> USPopulationList = populationDao.queryAll(); | ||||
|         if (USPopulationList != null) { | ||||
|             for (USPopulation USPopulation : USPopulationList) { | ||||
|                 System.out.println(USPopulation.getCity() + " " + USPopulation.getPopulation()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void save() { | ||||
|         populationDao.save(new USPopulation("TX", "Dallas", 66666)); | ||||
|         USPopulation usPopulation = populationDao.queryByStateAndCity("TX", "Dallas"); | ||||
|         System.out.println(usPopulation); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void update() { | ||||
|         populationDao.save(new USPopulation("TX", "Dallas", 99999)); | ||||
|         USPopulation usPopulation = populationDao.queryByStateAndCity("TX", "Dallas"); | ||||
|         System.out.println(usPopulation); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @Test | ||||
|     public void delete() { | ||||
|         populationDao.deleteByStateAndCity("TX", "Dallas"); | ||||
|         USPopulation usPopulation = populationDao.queryByStateAndCity("TX", "Dallas"); | ||||
|         System.out.println(usPopulation); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
							
								
								
									
										74
									
								
								code/Phoenix/spring-mybatis-phoenix/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								code/Phoenix/spring-mybatis-phoenix/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| <?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> | ||||
|  | ||||
|     <groupId>com.heibaiying</groupId> | ||||
|     <artifactId>spring-mybatis-phoenix</artifactId> | ||||
|     <version>1.0-SNAPSHOT</version> | ||||
|     <properties> | ||||
|         <spring-base-version>5.1.6.RELEASE</spring-base-version> | ||||
|     </properties> | ||||
|  | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-context</artifactId> | ||||
|             <version>${spring-base-version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-beans</artifactId> | ||||
|             <version>${spring-base-version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-core</artifactId> | ||||
|             <version>${spring-base-version}</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.projectlombok</groupId> | ||||
|             <artifactId>lombok</artifactId> | ||||
|             <version>1.18.4</version> | ||||
|             <scope>provided</scope> | ||||
|         </dependency> | ||||
|         <!--spring jdbc--> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-jdbc</artifactId> | ||||
|             <version>${spring-base-version}</version> | ||||
|         </dependency> | ||||
|         <!--单元测试相关依赖包--> | ||||
|         <dependency> | ||||
|             <groupId>junit</groupId> | ||||
|             <artifactId>junit</artifactId> | ||||
|             <version>4.12</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework</groupId> | ||||
|             <artifactId>spring-test</artifactId> | ||||
|             <version>${spring-base-version}</version> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <!--mybatis 依赖包--> | ||||
|         <dependency> | ||||
|             <groupId>org.mybatis</groupId> | ||||
|             <artifactId>mybatis-spring</artifactId> | ||||
|             <version>1.3.2</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.mybatis</groupId> | ||||
|             <artifactId>mybatis</artifactId> | ||||
|             <version>3.4.6</version> | ||||
|         </dependency> | ||||
|         <!--phoenix core--> | ||||
|         <dependency> | ||||
|             <groupId>org.apache.phoenix</groupId> | ||||
|             <artifactId>phoenix-core</artifactId> | ||||
|             <version>4.14.0-cdh5.14.2</version> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
|  | ||||
| </project> | ||||
| @@ -0,0 +1,15 @@ | ||||
| package com.heibaiying.bean; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| @Data | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class USPopulation { | ||||
|  | ||||
|     private String state; | ||||
|     private String city; | ||||
|     private long population; | ||||
| } | ||||
| @@ -0,0 +1,17 @@ | ||||
| package com.heibaiying.dao; | ||||
|  | ||||
| import com.heibaiying.bean.USPopulation; | ||||
| import org.apache.ibatis.annotations.Param; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| public interface PopulationDao { | ||||
|  | ||||
|     List<USPopulation> queryAll(); | ||||
|  | ||||
|     void save(USPopulation USPopulation); | ||||
|  | ||||
|     USPopulation queryByStateAndCity(@Param("state") String state, @Param("city") String city); | ||||
|  | ||||
|     void deleteByStateAndCity(@Param("state") String state, @Param("city") String city); | ||||
| } | ||||
| @@ -0,0 +1,4 @@ | ||||
| # <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> | ||||
| phoenix.driverClassName=org.apache.phoenix.jdbc.PhoenixDriver | ||||
| # zookeeper<65><72>ַ | ||||
| phoenix.url=jdbc:phoenix:192.168.0.105:2181 | ||||
| @@ -0,0 +1,24 @@ | ||||
| <!DOCTYPE mapper | ||||
|         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||
|         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||
|  | ||||
| <mapper namespace="com.heibaiying.dao.PopulationDao"> | ||||
|  | ||||
|  | ||||
|     <select id="queryAll" resultType="com.heibaiying.bean.USPopulation"> | ||||
|         SELECT * FROM us_population | ||||
|     </select> | ||||
|  | ||||
|     <insert id="save"> | ||||
|         UPSERT INTO us_population VALUES( #{state}, #{city}, #{population} ) | ||||
|     </insert> | ||||
|  | ||||
|     <select id="queryByStateAndCity" resultType="com.heibaiying.bean.USPopulation"> | ||||
|         SELECT * FROM us_population WHERE state=#{state} AND city = #{city} | ||||
|     </select> | ||||
|  | ||||
|     <delete id="deleteByStateAndCity"> | ||||
|         DELETE FROM us_population WHERE state=#{state} AND city = #{city} | ||||
|     </delete> | ||||
|  | ||||
| </mapper> | ||||
| @@ -0,0 +1,17 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <!DOCTYPE configuration | ||||
|         PUBLIC "-//mybatis.org//DTD Config 3.0//EN" | ||||
|         "http://mybatis.org/dtd/mybatis-3-config.dtd"> | ||||
|  | ||||
| <!-- mybatis 配置文件 --> | ||||
| <configuration> | ||||
|     <settings> | ||||
|         <!-- 开启驼峰命名 --> | ||||
|         <setting name="mapUnderscoreToCamelCase" value="true"/> | ||||
|         <!-- 打印查询sql --> | ||||
|         <setting name="logImpl" value="STDOUT_LOGGING"/> | ||||
|     </settings> | ||||
|  | ||||
| </configuration> | ||||
|  | ||||
| <!--更多settings配置项可以参考官方文档: <a href="http://www.mybatis.org/mybatis-3/zh/configuration.html"/>--> | ||||
| @@ -0,0 +1,38 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <beans xmlns="http://www.springframework.org/schema/beans" | ||||
|        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|        xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" | ||||
|        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||||
|         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> | ||||
|  | ||||
|     <!-- 开启注解包扫描--> | ||||
|     <context:component-scan base-package="com.heibaiying.*"/> | ||||
|  | ||||
|     <!--指定配置文件的位置--> | ||||
|     <context:property-placeholder location="classpath:jdbc.properties"/> | ||||
|  | ||||
|     <!--配置数据源--> | ||||
|     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> | ||||
|         <!--Phoenix配置--> | ||||
|         <property name="driverClassName" value="${phoenix.driverClassName}"/> | ||||
|         <property name="url" value="${phoenix.url}"/> | ||||
|     </bean> | ||||
|  | ||||
|     <!--配置 mybatis 会话工厂 --> | ||||
|     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> | ||||
|         <property name="dataSource" ref="dataSource"/> | ||||
|         <!--指定mapper文件所在的位置--> | ||||
|         <property name="mapperLocations" value="classpath*:/mappers/**/*.xml"/> | ||||
|         <property name="configLocation" value="classpath:mybatisConfig.xml"/> | ||||
|     </bean> | ||||
|  | ||||
|     <!--扫描注册接口 --> | ||||
|     <!--作用:从接口的基础包开始递归搜索,并将它们注册为 MapperFactoryBean(只有至少一种方法的接口才会被注册;, 具体类将被忽略)--> | ||||
|     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> | ||||
|         <!--指定会话工厂 --> | ||||
|         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> | ||||
|         <!-- 指定mybatis接口所在的包 --> | ||||
|         <property name="basePackage" value="com.heibaiying.dao"/> | ||||
|     </bean> | ||||
|  | ||||
| </beans> | ||||
| @@ -0,0 +1,50 @@ | ||||
| package com.heibaiying.dao; | ||||
|  | ||||
| import com.heibaiying.bean.USPopulation; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.test.context.ContextConfiguration; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| @RunWith(SpringRunner.class) | ||||
| @ContextConfiguration({"classpath:springApplication.xml"}) | ||||
| public class PopulationDaoTest { | ||||
|  | ||||
|     @Autowired | ||||
|     private PopulationDao populationDao; | ||||
|  | ||||
|     @Test | ||||
|     public void queryAll() { | ||||
|         List<USPopulation> USPopulationList = populationDao.queryAll(); | ||||
|         if (USPopulationList != null) { | ||||
|             for (USPopulation USPopulation : USPopulationList) { | ||||
|                 System.out.println(USPopulation.getCity() + " " + USPopulation.getPopulation()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void save() { | ||||
|         populationDao.save(new USPopulation("TX", "Dallas", 66666)); | ||||
|         USPopulation usPopulation = populationDao.queryByStateAndCity("TX", "Dallas"); | ||||
|         System.out.println(usPopulation); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void update() { | ||||
|         populationDao.save(new USPopulation("TX", "Dallas", 99999)); | ||||
|         USPopulation usPopulation = populationDao.queryByStateAndCity("TX", "Dallas"); | ||||
|         System.out.println(usPopulation); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @Test | ||||
|     public void delete() { | ||||
|         populationDao.deleteByStateAndCity("TX", "Dallas"); | ||||
|         USPopulation usPopulation = populationDao.queryByStateAndCity("TX", "Dallas"); | ||||
|         System.out.println(usPopulation); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user