Springboot-Mybatis-Oracle-H2-Properties demo
阿新 • • 發佈:2020-07-25
先說廢話: 之前有一片sprin 框架的Mybatis 框架,這個是為將之改造為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 https://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.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository--> </parent> <groupId>com.adao</groupId> <artifactId>mybaits</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybaits</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId> spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>10.2.0.2.0</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>cn.easyproject</groupId> <artifactId>orai18n</artifactId> <version>12.1.0.2.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
MAIN 檔案
包: com.adao.mybatis
PropertiesUtil 有註釋的地方是
package com.adao.mybaits.common; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; /** * @Classname PropertiesUtil * @Description TODO * @Date 2020/7/23 * @Created ADAO */ @Configuration @ConfigurationProperties(prefix = "config", ignoreUnknownFields = false) //@PropertySource("classpath:config.properties") @Component public class PropertiesUtil { @Value("${socket.server.address}") private String serverAddress; @Value("${socket.server.port}") private String serverPort; public String getServerAddress() { return serverAddress; } public void setServerAddress(String serverAddress) { this.serverAddress = serverAddress; } public String getServerPort() { return serverPort; } public void setServerPort(String serverPort) { this.serverPort = serverPort; } }
TerController
package com.adao.mybaits.controller; import com.adao.mybaits.common.PropertiesUtil; import com.adao.mybaits.entity.TerminalBean; import com.adao.mybaits.service.TerminalService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @Classname TerController * @Description TODO * @Date 2020/7/23 * @Created ADAO */ //@EnableConfigurationProperties(PropertiesUtil.class) @RestController @RequestMapping("/test") public class TerController { @Autowired PropertiesUtil propertiesUtil; @Autowired private TerminalService terminalService; @RequestMapping("getTer/{id}") public String GetUser(@PathVariable long id) { System.out.println("terminalService ##############: " + terminalService); String teaminalName = terminalService.getTerNameById(String.valueOf(id)); System.out.println(teaminalName); return teaminalName; } @RequestMapping("getTaskTer/{id}") public long getTaskTer(@PathVariable long id) { //"1433142404804l" List<TerminalBean> b = terminalService.getTerListByTaskId(id); System.out.println(b.get(0).getTerminalAddress()); return b.get(0).getTerminalAddress(); } @RequestMapping("getTer") public String GetUser() { System.out.println("terminalService ##############: " + terminalService); List<TerminalBean> list = terminalService.list(); System.out.println("資料庫有" + list.size() + "條終端記錄"); return "資料庫有" + list.size() + "條終端記錄"; } @RequestMapping("getProperties") public String testProperties() { String str = propertiesUtil.getServerAddress(); String i = propertiesUtil.getServerPort(); System.out.println(str); System.out.println(i); return str + i; } @RequestMapping("setProperties") public String setProperties() { propertiesUtil.setServerAddress("192.168.127.222"); propertiesUtil.setServerPort("8888"); String str2 = propertiesUtil.getServerAddress(); String i2 = propertiesUtil.getServerPort(); System.out.println(str2); System.out.println(i2); return str2 + i2; } }
TerminalMapper
package com.adao.mybaits.dao; import java.util.List; import java.util.Map; import com.adao.mybaits.entity.TerminalBean; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; /** * 終端mapper * */ //@Repository //@Transactional //@Mapper @Component public interface TerminalMapper { /** * 根據ID取終端名稱 * * @param terId * @return */ public String getTerNameById(long terId); public List<TerminalBean> list(); /** * 根據taskId獲取對應的終端資訊 * @param taskId * @return */ public List<TerminalBean> getTerListByTaskId(long taskId); /** * @Author 瞿天賜 * @Description 根據終端ID查詢表地址ID * @Date 2020/07/09 * @Param [terminalId] * @return java.util.List<java.lang.Long> **/ public List<Map<String,Object>> getMpointIdList(@Param("terminalId") long terminalId); }
TerminalBean.
package com.adao.mybaits.entity; /** * 終端檔案 */ public class TerminalBean { private long terminalId; // 終端ID private long terminalAddress;// 終端地址 public long getTerminalId() { return terminalId; } public void setTerminalId(long terminalId) { this.terminalId = terminalId; } public long getTerminalAddress() { return terminalAddress; } public void setTerminalAddress(long terminalAddress) { this.terminalAddress = terminalAddress; } }
TerminalService
package com.adao.mybaits.service; import com.adao.mybaits.entity.TerminalBean; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * 業務介面 * * @author ADAO * 2020-06-23 */ public interface TerminalService { /** * 測試方法 :獲取列表 * * @return */ public List<TerminalBean> list(); /** * 測試方法 :獲取終端名 * * @return */ public String getTerNameById(String id); /** * 根據任務id獲取對應的終端資訊 * @param taskId * @return */ public List<TerminalBean> getTerListByTaskId(long taskId); /** * @Author 瞿天賜 * @Description 根據終端ID查詢表地址ID * @Date 2020/07/09 * @Param [terminalId] * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>> **/ public List<Map<String,Object>> getMpointIdList(long terminalId); }
MybaitsApplication
package com.adao.mybaits; import org.apache.ibatis.annotations.Mapper; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @MapperScan(basePackages = {"com.adao.mybaits.dao"}) @SpringBootApplication //@ComponentScan(basePackages = {"com.adao.mybaits"}) public class MybaitsApplication { public static void main(String[] args) { SpringApplication.run(MybaitsApplication.class, args); } }
TerminalServiceImpl
package com.adao.mybaits.service.impl; import com.adao.mybaits.entity.TerminalBean; import com.adao.mybaits.dao.TerminalMapper; import com.adao.mybaits.service.TerminalService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * 實現類 * * @author ADAO * 2020-06-23 */ @Service public class TerminalServiceImpl implements TerminalService { @Autowired private TerminalMapper terminalMapper; @Override public List<TerminalBean> list() { System.out.println("terminalMapper####################" +terminalMapper); return terminalMapper.list(); } @Override public String getTerNameById(String id) { //long terId = Long.parseLong("1437640452317"); long terId = Long.parseLong(id); String teaminalName = terminalMapper.getTerNameById(terId); return teaminalName; } @Override public List<TerminalBean> getTerListByTaskId(long taskId) { List<TerminalBean> terminalBeans = terminalMapper.getTerListByTaskId(taskId); return terminalBeans; } @Override public List<Map<String, Object>> getMpointIdList(long terminalId) { return terminalMapper.getMpointIdList(terminalId); } }
RESOURCE 檔案
mapping/TerminalMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="com.adao.mybaits.dao.TerminalMapper"> <select id="getTerNameById" resultType="String"> select TERMINAL_NAME from T_TERMINAL where TERMINAL_ID=#{terId} </select> <select id="list" resultType="com.adao.mybaits.entity.TerminalBean"> select * from T_TERMINAL </select> <select id="getTerListByTaskId" resultType="com.adao.mybaits.entity.TerminalBean"> select t.TERMINAL_ID terminalId, t.TERMINAL_ADDRESS terminalAddress from T_TASK_DEVICE_RELATION tdr, T_TERMINAL t where TASK_ID=#{taskId} and t.TERMINAL_ID = tdr.DEVICE_ID </select> <select id="getMpointIdList" resultType="java.util.Map"> SELECT m.MPOINT_ID mpointId, m.MPOINT_INDEX mpointIndex FROM T_TERMINAL t LEFT JOIN T_MPOINT m ON t.TERMINAL_ID = m.TERMINAL_ID WHERE t.TERMINAL_ID = #{terminalId} </select> </mapper>
配置檔案:
appliation.yml
#spring: # profiles: # active:dev ############################################################ # # 配置資料來源資訊 # ############################################################ spring: datasource: # 資料來源的相關配置 type: com.zaxxer.hikari.HikariDataSource # 資料來源型別:HikariCP driver-class-name: oracle.jdbc.OracleDriver # oracle驅動 url: jdbc:oracle:thin:@192.168.127.150:1521:ORCL username: coll_platform password: coll_platform hikari: connection-timeout: 30000 # 等待連線池分配連線的最大時長(毫秒),超過這個時長還沒可用的連線則發生SQLException, 預設:30秒 minimum-idle: 5 # 最小連線數 maximum-pool-size: 20 # 最大連線數 auto-commit: true # 自動提交 idle-timeout: 600000 # 連線超時的最大時長(毫秒),超時則被釋放(retired),預設:10分鐘 pool-name: DateSourceHikariCP # 連線池名字 max-lifetime: 1800000 # 連線的生命時長(毫秒),超時而且沒被使用則被釋放(retired),預設:30分鐘 1800000ms ############################################################ # # mybatis 配置 # ############################################################ mybatis: type-aliases-package: com.adao.mybaits.entity # 所有POJO類所在包路徑 mapper-locations: classpath:mapping/TerminalMapper.xml # mapper對映檔案 server: port: 8080 #showSql logging: level: com: example: mapper : debug
config.properties
#socket server config
socket.server.address=127.0.0.1
socket.server.port=8511
執行結果
控制檯hikari日誌
完美