在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表中是否存在對應的字段參數,來選擇查詢條件執行,非常方便。