1. 数据库中建立 3张表,2个对象,一张关联表
2. 关联表对应java 对象
private int id;
private DataTag dataTag;
private StorageData storageData;
3. DataTag
private int tagId;
private String tagName;
private int parent;
private String userId;
private List<StorageData> storageDataList;
4. StorageData
private String dataId;
private String description;
private byte[] content;
private String fileName;
private String ext;
根据需求决定对象是否加另一对象的List,通过tag要找dataList,所以tag中含 storageDataList
5.xml
<resultMap type="DataTag" id="dataTagMap">
<id property="tagId" column="tagId" />
<result property="tagName" column="tagName" />
<result property="parent" column="parent" />
<result property="userId" column="userId" />
</resultMap>
<resultMap type="DataTag" id="dataTagStorageDataMap" extends="dataTagMap">
<collection property="storageDataList" ofType="StorageData">
<id property="dataId" column="dataId" />
<result property="description" column="description" />
<result property="ext" column="ext" />
<result property="fileName" column="fileName" />
<result property="content" column="content" />
</collection>
</resultMap>
<select id="findTagByUserId" parameterType="string" resultMap="dataTagStorageDataMap">
SELECT
t.tagId,
t.tagName,
t.parent,
t.userId,
d.dataId,
d.description,
d.ext,
d.fileName,
d.content
FROM t_tag t
LEFT JOIN t_tag_storage_data td
ON t.tagId = td.tagId
LEFT JOIN t_storage_data d
ON td.dataId = d.dataId
WHERE userId = #{userId}
</select>
6. 插入操作,维护关系表
在stoargeData 中加
public void saveRelativity(TagStorageDataLink tagDataLink);