Mybatis:DAO接口文件與Mapper映射文件多參數傳遞

在Mybatis中,DAO接口文件與Mapper映射文件的接口方法是一致的

1.單個參數傳遞

UserDAO.java接口如下:

public interface UserDAO {
	public User getUser(String UserName);
}

對應的UserDAOMapper.xml內容如下:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gszh.wmcp.project.weixinweb.dao.UserDAO">
	<select id="getUser" resultType="com.gszh.wmcp.project.weixin.model.User">
		SELECT * from T_User t
		where UserName=#{UserName}
	</select>				
</mapper>

正常情況下,通過Spring的自動裝載機制,調用UserDao.getUser接口方法時,Mybaits會自動關聯到Mapper.xml對應的方法。

2.多個參數傳遞

如果getUser傳遞的是兩個參數,則需要使用@Param註解,修改後UserDAO.java如下

public interface UserDAO {
	public User getUser(@Param("UserName") String UserName,@Param("UID") String UID);
}

對應的UserDAOMapper.xml修改後內容如下:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gszh.wmcp.project.weixinweb.dao.UserDAO">
	<select id="getUser" resultType="com.gszh.wmcp.project.weixin.model.User">
		SELECT * from T_User t
		where UserName=#{UserName} and UID=#{UID}
	</select>				
</mapper>

參數前綴@Param(“UserName”) 表示此參數將對應sql語句中的#{UserName},UID同理。

3.使用HashMap傳遞動態個數的參數

如果查詢條件參數不固定,前端查詢有可能僅使用1個參數,有可能同時使用3個參數,這時接口參數應該用HashMap的類型,動態獲取參數。

DAO.java接口如下:

public interface GSUserBandingDAO {

	public List<GSUserBanding> getList(HashMap<String, String> map);

	public void deleteOne(String id);

}

方法getList中入參爲hashMap,可接收不固定個數和參數

對應的Mapper.xml內容如下:

	<select id="getList" resultMap="GSUserBanding" parameterType="java.util.HashMap">
		SELECT * FROM V_gsuserbanding AS tm WHERE 1=1 
		<if test="NickName !=null and NickName!=''">
		and NickName like "%"#{NickName}"%"
		</if>
		<if test="archNo !=null and archNo !=''">
		and archNo like "%"#{archNo}"%"
		</if>
		<if test="UserName !=null and UserName !=''">
		and UserName like "%"#{UserName}"%"
		</if>
		<if test="BeginTime !=null and BeginTime !=''">
		and CreateTime <![CDATA[ >= ]]> #{BeginTime}
		</if>
		<if test="EndTime !=null and EndTime !=''">
		and CreateTime <![CDATA[ <= ]]> #{EndTime}
		</if>									
		<if test="start !=null and limit !=null">
		limit ${start},${limit}
		</if>		
	</select>

入參類型爲Java.util.HashMap,對應接口文件的HashMap。

此xml文件中的sql查詢語句,可以自動根據入參hashMap表中是否存在對應的字段參數,來選擇查詢條件執行,非常方便。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章