MyBatisは複数のパラメーターを受け取ります。1つはコレクションで、もう1つは文字列ソリューションです。

ウィークリーレポート2020-09-14

先週、詳細設計に従ってコードを作成しましたが、その過程でMyBatisフレームワークに関する問題が発生しました。インターフェイスの抽象メソッドに2つのパラメーターがあり、パラメーターの1つがセットで、もう1つが文字列の場合、この場合、パラメーターを正しく受け取るためにxmlファイルにparameterTypeを書き込む方法。インターネットで検索した後、先輩に聞いて最終的に問題を解決しました。つまり、HashMapにカプセル化し、parameterTypeでMapタイプのパラメーターを受け入れ、Mapキーを使用してデータを取得し、動的SQLforeachタグを使用してリストをトラバースします。

インターフェース

public List<XXXBean> getXXXBeanList(HashMap map);  

<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">

  select 字段... from XXX where id=#{xxId} code = #{xxCode}  

</select>  

其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就放在#{}中。
具体例

リストと文字列をマップにカプセル化します

List<String> list = new ArrayList<>();
//网址
list.add("https://www.baidu.com");
list.add("https://www.bilibili.com");
//网址类型
String siteTag = "https";

HashMap<String,Object> map = new HashMap<>();
//封装map,一会需要使用这里定义的key进行数据接收
map.put("list", list);
map.put("siteTag",siteTag)


インターフェイス方式

public List<SysWeb> getSysInfo(Map<String, Object>);

mapper.xml

次のxmlコードは、クエリネットワークタイプがhttpsであることを意味しますが、Baiduとbilibiliの2つのWebサイトを除く他のWebサイトです。

<select id="getSysInfo" parameterType="java.util.Map" resultType="SysWeb">
	SELECT
   	t.sysSiteId, t.siteName, t1.mzNum as siteTagNum, t1.mzName as siteTag, t.url, t.iconPath
 	FROM 
  		TD_WEB_SYSSITE t
  	LEFT JOIN
  		TD_MZ_MZDY t1 on t1.mzNum = t.siteTag and t1.mzType = 10
  	WHERE 
  		t.siteTag = #{siteTag} and t.sysSiteId not in 
  <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
     #{item}
  </foreach>
</select>

おすすめ

転載: blog.csdn.net/weixin_43941676/article/details/108570499