diff --git a/src/main/java/com/pt5/pthouduan/entity/SoftwareInfo.java b/src/main/java/com/pt5/pthouduan/entity/SoftwareInfo.java
new file mode 100644
index 0000000..caf3666
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/entity/SoftwareInfo.java
@@ -0,0 +1,22 @@
+package com.pt5.pthouduan.entity;
+
+// 实体类：SoftwareInfo.java
+public class SoftwareInfo {
+    private Long torrentid;
+    private String platform;
+    private String genre;
+    private String format;
+
+    // Getters and Setters
+    // Getters
+    public Long getTorrentid() { return torrentid; }
+    public String getPlatform() { return platform; }
+    public String getGenre() { return genre; }
+    public String getFormat() { return format; }
+
+    // Setters
+    public void setTorrentid(Long torrentid) { this.torrentid = torrentid; }
+    public void setPlatform(String platform) { this.platform = platform; }
+    public void setGenre(String genre) { this.genre = genre; }
+    public void setFormat(String format) { this.format = format; }
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/AnimeInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/AnimeInfoMapper.java
new file mode 100644
index 0000000..b14e227
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/AnimeInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.AnimeInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AnimeInfoMapper {
+    void insert(AnimeInfo animeInfo);
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/DocumentaryInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/DocumentaryInfoMapper.java
new file mode 100644
index 0000000..60840ec
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/DocumentaryInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.DocumentaryInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DocumentaryInfoMapper {
+    void insert(DocumentaryInfo documentaryInfo);
+}
diff --git a/src/main/java/com/pt5/pthouduan/mapper/EduInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/EduInfoMapper.java
new file mode 100644
index 0000000..30a670c
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/EduInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.EduInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EduInfoMapper {
+    void insert(EduInfo eduInfo);
+}
diff --git a/src/main/java/com/pt5/pthouduan/mapper/GameInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/GameInfoMapper.java
new file mode 100644
index 0000000..e04a678
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/GameInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.GameInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface GameInfoMapper {
+    void insert(GameInfo gameInfo);
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/MovieInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/MovieInfoMapper.java
new file mode 100644
index 0000000..e07ed3a
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/MovieInfoMapper.java
@@ -0,0 +1,10 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.MovieInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface MovieInfoMapper {
+    void insert(MovieInfo movieInfo);
+
+}
diff --git a/src/main/java/com/pt5/pthouduan/mapper/MusicInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/MusicInfoMapper.java
new file mode 100644
index 0000000..91dcd56
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/MusicInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.MusicInfo;
+import org.springframework.stereotype.Service;
+
+@Service
+public interface MusicInfoMapper {
+    void insert(MusicInfo musicInfo);
+}
diff --git a/src/main/java/com/pt5/pthouduan/mapper/OtherInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/OtherInfoMapper.java
new file mode 100644
index 0000000..09a9581
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/OtherInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.OtherInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OtherInfoMapper {
+    void insert(OtherInfo otherInfo);
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/ShowInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/ShowInfoMapper.java
new file mode 100644
index 0000000..a7222b8
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/ShowInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.ShowInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ShowInfoMapper {
+    void insert(ShowInfo showInfo);
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/SoftwareInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/SoftwareInfoMapper.java
new file mode 100644
index 0000000..fdf4559
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/SoftwareInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.SoftwareInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SoftwareInfoMapper {
+    void insert(SoftwareInfo softwareInfo);
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/SportInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/SportInfoMapper.java
new file mode 100644
index 0000000..37b5739
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/SportInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.SportInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SportInfoMapper {
+    void insert(SportInfo sportInfo);
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/mapper/TvInfoMapper.java b/src/main/java/com/pt5/pthouduan/mapper/TvInfoMapper.java
new file mode 100644
index 0000000..181b604
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/TvInfoMapper.java
@@ -0,0 +1,9 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.TvInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface TvInfoMapper {
+    void insert(TvInfo tvInfo);  // 方法名与你的代码一致
+}
\ No newline at end of file
