diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..6e1697a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,37 @@
+
+
+ 4.0.0
+
+ space.caoshd
+ otone
+ 1.0.0-SNAPSHOT
+
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+
+ com.mysql
+ mysql-connector-j
+ 8.2.0
+
+
+ ch.qos.logback
+ logback-classic
+ 1.4.14
+
+
+ org.junit.jupiter
+ junit-jupiter
+ RELEASE
+ test
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/space/caoshd/otone/tool/PropertyTools.java b/src/main/java/space/caoshd/otone/tool/PropertyTools.java
new file mode 100644
index 0000000..2d798dd
--- /dev/null
+++ b/src/main/java/space/caoshd/otone/tool/PropertyTools.java
@@ -0,0 +1,44 @@
+package space.caoshd.otone.tool;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * properties 加载类
+ */
+public class PropertyTools {
+
+ Map propertyMap;
+
+ public PropertyTools(InputStream stream) {
+ propertyMap = loadProperties(stream);
+ }
+
+ public Map loadProperties(InputStream stream) {
+ try {
+ Properties properties = new Properties();
+ properties.load(stream);
+ Map result = new HashMap<>();
+ properties.forEach((k, v) -> result.put((String) k, (String) v));
+ return result;
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public String getString(String key) {
+ return propertyMap.get(key);
+ }
+
+ public Integer getInt(String key) {
+ return Integer.valueOf(propertyMap.get(key));
+ }
+
+ public Long getLong(String key) {
+ return Long.valueOf(propertyMap.get(key));
+ }
+
+}
diff --git a/src/main/java/space/caoshd/otone/util/Constants.java b/src/main/java/space/caoshd/otone/util/Constants.java
new file mode 100644
index 0000000..70d26dc
--- /dev/null
+++ b/src/main/java/space/caoshd/otone/util/Constants.java
@@ -0,0 +1,11 @@
+package space.caoshd.otone.util;
+
+public class Constants {
+ public Constants() {
+ }
+
+ public static final String DATASOURCE_PATH = "datasource.properties";
+
+ public static final String CONFIG_PATH = "config.properties";
+
+}
diff --git a/src/main/java/space/caoshd/otone/util/ResourceUtils.java b/src/main/java/space/caoshd/otone/util/ResourceUtils.java
new file mode 100644
index 0000000..5965e6c
--- /dev/null
+++ b/src/main/java/space/caoshd/otone/util/ResourceUtils.java
@@ -0,0 +1,17 @@
+package space.caoshd.otone.util;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+
+public class ResourceUtils {
+ public static InputStream getClassPathFileStream(String filename) {
+ return ResourceUtils.class.getClassLoader().getResourceAsStream(filename);
+ }
+
+ public static File getClassPathFile(String filename) {
+ URL resource = ResourceUtils.class.getClassLoader().getResource(filename);
+ assert resource != null;
+ return new File(resource.getFile());
+ }
+}
diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/resources/datasource.properties b/src/main/resources/datasource.properties
new file mode 100644
index 0000000..36c70db
--- /dev/null
+++ b/src/main/resources/datasource.properties
@@ -0,0 +1,4 @@
+username=root
+password=123456
+url=jdbc:mysql://localhost:3306/otone?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+driver-class-name=com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java b/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java
new file mode 100644
index 0000000..2484459
--- /dev/null
+++ b/src/test/java/space/caoshd/otone/tool/PropertyToolsTest.java
@@ -0,0 +1,34 @@
+package space.caoshd.otone.tool;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import space.caoshd.otone.util.Constants;
+import space.caoshd.otone.util.ResourceUtils;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class PropertyToolsTest {
+
+ @Test
+ void loadProperties() {
+ InputStream fileStream = ResourceUtils.getClassPathFileStream(Constants.DATASOURCE_PATH);
+ PropertyTools propertyTools = new PropertyTools(fileStream);
+ Assertions.assertNotNull(propertyTools);
+ }
+
+ @Test
+ void getString() {
+ }
+
+ @Test
+ void getInt() {
+ }
+
+ @Test
+ void getLong() {
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/space/caoshd/otone/util/ResourceUtilsTest.java b/src/test/java/space/caoshd/otone/util/ResourceUtilsTest.java
new file mode 100644
index 0000000..ddc65ca
--- /dev/null
+++ b/src/test/java/space/caoshd/otone/util/ResourceUtilsTest.java
@@ -0,0 +1,18 @@
+package space.caoshd.otone.util;
+
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+
+class ResourceUtilsTest {
+
+ @Test
+ void getClassPathFile() {
+ File file = ResourceUtils.getClassPathFile("datasource.properties");
+ System.out.println(file);
+ }
+
+ @Test
+ void getClassPathFileStream() {
+ }
+}
\ No newline at end of file
diff --git a/src/test/resources/config.properties b/src/test/resources/config.properties
new file mode 100644
index 0000000..e69de29
diff --git a/src/test/resources/datasource.properties b/src/test/resources/datasource.properties
new file mode 100644
index 0000000..36c70db
--- /dev/null
+++ b/src/test/resources/datasource.properties
@@ -0,0 +1,4 @@
+username=root
+password=123456
+url=jdbc:mysql://localhost:3306/otone?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+driver-class-name=com.mysql.cj.jdbc.Driver
\ No newline at end of file