pull/2/head
qian 9 months ago
parent 698fd8b14e
commit 1d573a7c89

@ -10,7 +10,7 @@
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="UserActionAnalyzePlatform" target="1.6" />
<module name="UserActionAnalyzePlatform" target="7" />
</bytecodeTargetLevel>
</component>
</project>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

@ -1,58 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="ALL" />
</component>
<component name="ChangeListManager">
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="1">
<change afterPath="$PROJECT_DIR$/.idea/jarRepositories.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/UserActionAnalyzePlatform.iml" beforeDir="false" afterPath="$PROJECT_DIR$/UserActionAnalyzePlatform.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionAggrStat.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionAggrStat.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/test/java/cn/edu/hust/jdbc/JDBCHelperTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/jdbc/JDBCHelperTest.java" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/target/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="UserVisitAnalyze.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-377">
<caret line="972" column="29" lean-forward="false" selection-start-line="972" selection-start-column="29" selection-end-line="972" selection-end-column="29" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="MockData.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1482">
<caret line="93" column="50" lean-forward="false" selection-start-line="93" selection-start-column="50" selection-end-line="93" selection-end-column="50" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="FIRST">
<first_editor relative-caret-position="703">
<caret line="448" column="0" lean-forward="false" selection-start-line="448" selection-start-column="0" selection-end-line="448" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
@ -69,6 +35,11 @@
</findStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="main" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GradleLocalSettings">
@ -142,11 +113,6 @@
<option name="pluginUpdatePolicy" value="UPDATE" />
</MavenGeneralSettings>
</option>
<option name="importingSettings">
<MavenImportingSettings>
<option name="importAutomatically" value="true" />
</MavenImportingSettings>
</option>
</component>
<component name="MavenRunner">
<option name="jreName" value="#JAVA_INTERNAL" />
@ -157,6 +123,7 @@
<option name="width" value="1440" />
<option name="height" value="873" />
</component>
<component name="ProjectId" id="2qIaOv8SokYIqnwkU4Yq0rRkMR5" />
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
@ -278,38 +245,32 @@
<pane id="AndroidView" />
</panes>
</component>
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="SearchEverywhereHistoryKey" value="wor&#9;FILE&#9;file:///Users/youyujie/Documents/UserActionAnalyzePlatform/.idea/libraries/Maven__org_apache_curator_curator_framework_2_4_0.xml" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.2" />
<property name="settings.editor.selected.configurable" value="MavenSettings" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="SearchEverywhereHistoryKey" value="wor&#9;FILE&#9;file:///Users/youyujie/Documents/UserActionAnalyzePlatform/.idea/libraries/Maven__org_apache_curator_curator_framework_2_4_0.xml" />
</component>
<component name="RecentsManager">
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="cn.edu.hust.dao" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData" />
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/src/main/java/cn/edu/hust/until" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="cn.edu.hust.dao" />
</key>
</component>
<component name="RunManager" selected="Application.UserVisitAnalyze">
<configuration default="true" type="Applet" factoryName="Applet">
@ -339,6 +300,17 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true">
<option name="arquillianRunConfiguration">
<value>
<option name="containerStateName" value="" />
</value>
</option>
<option name="TEST_OBJECT" value="class" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="ParamUtilsTest.test2" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="UserActionAnalyzePlatform" />
<extension name="coverage">
@ -449,9 +421,7 @@
</list>
</recent_temporary>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="SvnConfiguration">
<configuration />
</component>
@ -471,6 +441,7 @@
<workItem from="1529845795654" duration="7752000" />
<workItem from="1529887211212" duration="6851000" />
<workItem from="1529994772485" duration="146000" />
<workItem from="1734352519788" duration="1633000" />
</task>
<task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<created>1529592741848</created>
@ -486,7 +457,14 @@
<option name="project" value="LOCAL" />
<updated>1529593229553</updated>
</task>
<option name="localTasksCounter" value="3" />
<task id="LOCAL-00003" summary="1">
<created>1734352616873</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1734352616873</updated>
</task>
<option name="localTasksCounter" value="4" />
<servers />
</component>
<component name="TestHistory">
@ -589,46 +567,24 @@
</layout-to-restore>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State>
<option name="RECENTLY_FILTERED_USER_GROUPS">
<collection />
</option>
<option name="RECENTLY_FILTERED_BRANCH_GROUPS">
<collection />
</option>
<option name="COLUMN_ORDER">
<list>
<option value="0" />
<option value="1" />
<option value="2" />
<option value="3" />
</list>
</option>
</State>
<State />
</value>
</entry>
</map>
</option>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成" />
<option name="LAST_COMMIT_MESSAGE" value="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="32" />
</breakpoint-manager>
<watches-manager />
<MESSAGE value="1" />
<option name="LAST_COMMIT_MESSAGE" value="1" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java">

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">

@ -138,6 +138,14 @@
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
</plugins>
</build>

@ -5,7 +5,7 @@ import java.util.Properties;
/**
*
* :propertieskey/value11
* :propertieskey/value
*/
public class ConfigurationManager {
private static Properties prop=new Properties();

@ -2,28 +2,68 @@ package cn.edu.hust.domain;
import java.io.Serializable;
// SessionAggrStat类实现了Serializable接口意味着该类的对象可以被序列化和反序列化
// 常用于对象在网络传输、持久化存储等场景下的保存和恢复操作
public class SessionAggrStat implements Serializable {
// 任务ID用于标识相关的任务通常在涉及多任务处理的场景下区分不同任务对应的统计数据
private Long taskId;
// 会话数量,记录某个范围内的会话的总数
private Long SessionCount;
// 访问时长在1秒到3秒区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_1s_3s;
// 访问时长在4秒到6秒区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_4s_6s;
// 访问时长在7秒到9秒区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_7s_9s;
// 访问时长在10秒到30秒区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_10s_30s;
// 访问时长在30秒到60秒区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_30s_60s;
// 访问时长在1分钟到3分钟区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_1m_3m;
// 访问时长在3分钟到10分钟区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_3m_10m;
// 访问时长在10分钟到30分钟区间的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_10m_30m;
// 访问时长大于30分钟的相关占比或统计数值具体含义需根据业务场景确定是一个双精度浮点数类型
private double visit_Length_30m;
// 步长在1到3区间的相关占比或统计数值具体含义需根据业务场景确定比如可能是页面跳转的步数等相关统计是一个双精度浮点数类型
private double step_Length_1_3;
// 步长在4到6区间的相关占比或统计数值具体含义需根据业务场景确定比如可能是页面跳转的步数等相关统计是一个双精度浮点数类型
private double step_Length_4_6;
// 步长在7到9区间的相关占比或统计数值具体含义需根据业务场景确定比如可能是页面跳转的步数等相关统计是一个双精度浮点数类型
private double step_Length_7_9;
// 步长在10到30区间的相关占比或统计数值具体含义需根据业务场景确定比如可能是页面跳转的步数等相关统计是一个双精度浮点数类型
private double step_Length_10_30;
// 步长在30到60区间的相关占比或统计数值具体含义需根据业务场景确定比如可能是页面跳转的步数等相关统计是一个双精度浮点数类型
private double step_Length_30_60;
// 步长大于60的相关占比或统计数值具体含义需根据业务场景确定比如可能是页面跳转的步数等相关统计是一个双精度浮点数类型
private double step_Length_60;
// 无参构造函数用于创建SessionAggrStat类的实例
// 当通过默认方式创建对象时SessionAggrStat obj = new SessionAggrStat();)会调用此构造函数
public SessionAggrStat() {
}
// 设置方法用于一次性设置SessionAggrStat类对象的所有属性值
// 参数依次对应各个属性的值,按照顺序传入相应的数据来初始化对象的各个属性
public void set(Long taskId, Long sessionCount, double visit_Length_1s_3s, double visit_Length_4s_6s, double visit_Length_7s_9s, double visit_Length_10s_30s, double visit_Length_30s_60s, double visit_Length_1m_3m, double visit_Length_3m_10m, double visit_Length_10m_30m, double visit_Length_30m, double step_Length_1_3, double step_Length_4_6, double step_Length_7_9, double step_Length_10_30, double step_Length_30_60, double step_Length_60) {
this.taskId = taskId;
SessionCount = sessionCount;
@ -44,139 +84,173 @@ public class SessionAggrStat implements Serializable {
this.step_Length_60 = step_Length_60;
}
// 获取任务ID的方法返回当前SessionAggrStat对象的任务ID属性值
public Long getTaskId() {
return taskId;
}
// 设置任务ID的方法用于给当前SessionAggrStat对象的任务ID属性赋值
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
// 获取会话数量的方法返回当前SessionAggrStat对象的会话数量属性值
public Long getSessionCount() {
return SessionCount;
}
// 设置会话数量的方法用于给当前SessionAggrStat对象的会话数量属性赋值
public void setSessionCount(Long sessionCount) {
SessionCount = sessionCount;
}
// 获取访问时长在1秒到3秒区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_1s_3s() {
return visit_Length_1s_3s;
}
// 设置访问时长在1秒到3秒区间的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_1s_3s(double visit_Length_1s_3s) {
this.visit_Length_1s_3s = visit_Length_1s_3s;
}
// 获取访问时长在4秒到6秒区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_4s_6s() {
return visit_Length_4s_6s;
}
// 设置访问时长在4秒到6秒区间的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_4s_6s(double visit_Length_4s_6s) {
this.visit_Length_4s_6s = visit_Length_4s_6s;
}
// 获取访问时长在7秒到9秒区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_7s_9s() {
return visit_Length_7s_9s;
}
// 设置访问时长在7秒到9秒区间的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_7s_9s(double visit_Length_7s_9s) {
this.visit_Length_7s_9s = visit_Length_7s_9s;
}
// 获取访问时长在10秒到30秒区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_10s_30s() {
return visit_Length_10s_30s;
}
// 设置访问时长在10秒到30秒区间的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_10s_30s(double visit_Length_10s_30s) {
this.visit_Length_10s_30s = visit_Length_10s_30s;
}
// 获取访问时长在30秒到60秒区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_30s_60s() {
return visit_Length_30s_60s;
}
// 设置访问时长在30秒到60秒区间的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_30s_60s(double visit_Length_30s_60s) {
this.visit_Length_30s_60s = visit_Length_30s_60s;
}
// 获取访问时长在1分钟到3分钟区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_1m_3m() {
return visit_Length_1m_3m;
}
// 设置访问时长在1分钟到3分钟区间的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_1m_3m(double visit_Length_1m_3m) {
this.visit_Length_1m_3m = visit_Length_1m_3m;
}
// 获取访问时长在3分钟到10分钟区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_3m_10m() {
return visit_Length_3m_10m;
}
public void setVisit_Legth_3m_10m(double visit_Legth_3m_10m) {
this.visit_Length_3m_10m = visit_Legth_3m_10m;
// 设置访问时长在3分钟到10分钟区间的相关占比或统计数值的方法用于给对应属性赋值此处方法名有拼写错误原代码中为setVisit_Legth_3m_10m应为setVisit_Length_3m_10m
public void setVisit_Length_3m_10m(double visit_Length_3m_10m) {
this.visit_Length_3m_10m = visit_Length_3m_10m;
}
// 获取访问时长在10分钟到30分钟区间的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_10m_30m() {
return visit_Length_10m_30m;
}
// 设置访问时长在10分钟到30分钟区间的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_10m_30m(double visit_Length_10m_30m) {
this.visit_Length_10m_30m = visit_Length_10m_30m;
}
// 获取访问时长大于30分钟的相关占比或统计数值的方法返回对应属性值
public double getVisit_Length_30m() {
return visit_Length_30m;
}
// 设置访问时长大于30分钟的相关占比或统计数值的方法用于给对应属性赋值
public void setVisit_Length_30m(double visit_Length_30m) {
this.visit_Length_30m = visit_Length_30m;
}
// 获取步长在1到3区间的相关占比或统计数值的方法返回对应属性值
public double getStep_Length_1_3() {
return step_Length_1_3;
}
// 设置步长在1到3区间的相关占比或统计数值的方法用于给对应属性赋值
public void setStep_Length_1_3(double step_Length_1_3) {
this.step_Length_1_3 = step_Length_1_3;
}
// 获取步长在4到6区间的相关占比或统计数值的方法返回对应属性值
public double getStep_Length_4_6() {
return step_Length_4_6;
}
// 设置步长在4到6区间的相关占比或统计数值的方法用于给对应属性赋值
public void setStep_Length_4_6(double step_Length_4_6) {
this.step_Length_4_6 = step_Length_4_6;
}
// 获取步长在7到9区间的相关占比或统计数值的方法返回对应属性值
public double getStep_Length_7_9() {
return step_Length_7_9;
}
// 设置步长在7到9区间的相关占比或统计数值的方法用于给对应属性赋值
public void setStep_Length_7_9(double step_Length_7_9) {
this.step_Length_7_9 = step_Length_7_9;
}
// 获取步长在10到30区间的相关占比或统计数值的方法返回对应属性值
public double getStep_Length_10_30() {
return step_Length_10_30;
}
// 设置步长在10到30区间的相关占比或统计数值的方法用于给对应属性赋值
public void setStep_Length_10_30(double step_Length_10_30) {
this.step_Length_10_30 = step_Length_10_30;
}
// 获取步长在30到60区间的相关占比或统计数值的方法返回对应属性值
public double getStep_Length_30_60() {
return step_Length_30_60;
}
// 设置步长在30到60区间的相关占比或统计数值的方法用于给对应属性赋值
public void setStep_Length_30_60(double step_Length_30_60) {
this.step_Length_30_60 = step_Length_30_60;
}
// 获取步长大于60的相关占比或统计数值的方法返回对应属性值
public double getStep_Length_60() {
return step_Length_60;
}
// 设置步长大于60的相关占比或统计数值的方法用于给对应属性赋值
public void setStep_Length_60(double step_Length_60) {
this.step_Length_60 = step_Length_60;
}
}
}

@ -1,47 +1,68 @@
package cn.edu.hust.jdbc;
import org.junit.Test;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class JDBCHelperTest {
@Test
public void testUpdate()
{
String sql="insert into user(username,age) values(?,?)";
Object[] params={"zhangsan",12};
JDBCHelper.getInstance().excuteUpdate(sql,params);
package cn.edu.hust.jdbc; // 包名,通常用来指定代码所属的模块或功能。
import org.junit.Test; // 导入JUnit的Test注解用于标记测试方法。
import java.sql.ResultSet; // 导入SQL的ResultSet类用于处理查询结果集。
import java.sql.SQLException; // 导入SQL异常类用于捕获和处理数据库相关的错误。
import java.util.ArrayList; // 导入ArrayList类用于创建动态数组。
import java.util.List; // 导入List接口用于定义列表类型的集合。
public class JDBCHelperTest { // 测试类包含多个测试方法用于验证JDBCHelper类的功能。
// 测试更新操作(插入数据)
@Test // 标记此方法为测试方法JUnit会自动识别并执行。
public void testUpdate() {
// SQL插入语句插入一个用户信息到user表中。
String sql = "insert into user(username, age) values(?, ?)";
// 插入的参数,表示要插入的用户名是"zhangsan"年龄是12。
Object[] params = {"zhangsan", 12};
// 使用JDBCHelper类的单例实例执行更新操作插入
JDBCHelper.getInstance().excuteUpdate(sql, params);
}
// 测试批量操作(批量插入数据)
@Test // 标记此方法为测试方法。
public void testBatch() {
// SQL插入语句插入多个用户信息到user表中。
String sql = "insert into user(username, age) values(?, ?)";
@Test
public void testBatch()
{
String sql="insert into user(username,age) values(?,?)";
List<Object[]> params=new ArrayList();
params.add(new Object[]{"lisi",23});
params.add(new Object[]{"wangwu",28});
JDBCHelper.getInstance().excuteBatch(sql,params);
// 创建一个List集合用于保存多组插入参数。
List<Object[]> params = new ArrayList<>();
// 添加第一组插入参数:用户名"lisi"年龄23。
params.add(new Object[]{"lisi", 23});
// 添加第二组插入参数:用户名"wangwu"年龄28。
params.add(new Object[]{"wangwu", 28});
// 使用JDBCHelper类的单例实例执行批量插入操作。
JDBCHelper.getInstance().excuteBatch(sql, params);
}
@Test
public void testQuery()
{
String sql="select * from user where username=?";
Object[] params={"zhangsan"};
// 测试查询操作(查询单个用户数据)
@Test // 标记此方法为测试方法。
public void testQuery() {
// SQL查询语句查询username为"zhangsan"的用户信息。
String sql = "select * from user where username=?";
// 查询条件,用户名为"zhangsan"。
Object[] params = {"zhangsan"};
// 使用JDBCHelper类的单例实例执行查询操作并传入查询回调接口。
JDBCHelper.getInstance().excuteQuery(sql, params, new JDBCHelper.QueryCallBack() {
// QueryCallBack接口的process方法负责处理查询结果。
@Override
public void process(ResultSet rs) {
try {
if(rs.next())
{
System.out.println("结果是"+rs.getInt(2));
// 如果查询结果集中有数据,取出第二列的内容(假设为年龄)。
if (rs.next()) {
System.out.println("结果是" + rs.getInt(2)); // 输出查询结果中的第二列(年龄)。
}
} catch (SQLException e) {
e.printStackTrace();
e.printStackTrace(); // 捕获SQL异常并打印堆栈信息。
}
}
});

Loading…
Cancel
Save