Mybatis框架中Mapper文件传值参数获取。【Mybatis】

Mybatis框架中,Mapper文件参数获取一般有以下几种:

1、参数个数为1个(string或者int)

dao层方法为以下两种:

/**
 * 单个int型
 */
    public List<UserComment> findByDepartmentId(int dapartmentId);

/**
 * 单个string型
 */
 public Source findByTitle(String title);

对应的Mapper取值:

取值时应当注意,参数名字应该与dao层传入的参数名字相同。

/*单个int型*/
<select id="findByDepartmentId"  resultType="com.bonc.wechat.entity.publicserver.UserComment">
	select * from wx_user_comment where 
	department_id=#{departmentId} 
	order by createtime desc;
</select>


/*单个string型*/
<select id="findByTitle"  parameterType="java.lang.String" resultType="com.bonc.wechat.entity.publicserver.Source">
	select * from wx_source where 
        title=#{title};
</select>


/*****或者直接使用通用方法获取参数*****/

<select id="findByDepartmentId"  resultType="com.bonc.wechat.entity.publicserver.UserComment">
	select * from wx_user_comment where 
	department_id=#{_parameter} 
	order by createtime desc;
</select>



<select id="findByTitle"  parameterType="java.lang.String" resultType="com.bonc.wechat.entity.publicserver.Source">
	select * from wx_source where 
        title=#{_parameter};
</select>

2、参数个数为多个。

dao层方法:

/*****1.正常传参*****/
public Dailyuserinfo findStutaByUserAndDaily(String username,String dailyid);


/*****2.注解传参*****/
public List<UserTab> selectUserListExceptUserId
(@Param("USER_ID")String USER_ID, 
 @Param("LIMIT_POS")int LIMIT_POS, 
 @Param("LIMIT_SIZE")int LIMIT_SIZE);


对应的Mapper取值:

取值时应当注意,参数名字应该与dao层传入的参数名字相同。

/****正常传参方式参数获取****/
<select id="findStutaByUserAndDaily"
           parameterType="java.lang.String" 
           resultType="com.thinkgem.jeesite.modules.dailynews.entity.Dailyuserinfo">

    select * from daily_user_info 
    where login_name=#{username} 
    And daily_id=#{dailyid};

</select>


/****注解传参方式参数获取****/
<select id="selectUserListExceptUserId" 
            resultMap="userResMap">

	select * from MH_USER 
        where USER_ID!=#{USER_ID} 
        and USER_STATE>9 
        order by NICK_NAME 
        limit #{LIMIT_POS},#{LIMIT_SIZE}
</select>

3、参数为map的形式。

mapper中使用map的key取值。

dao中的方法。

/*****1.参数为map*****/
public List<Source> search(Map<String,Object> param);

/***2.map的内部封装***/
     Map<String,Object> param=new HashMap<String,Object>();
    param.put("page", (page-1)*pageSize);
    param.put("pageSize",pageSize);
    param.put("keyword","%"+keyword+"%");
    param.put("type",type);
    List<Source> sources=sourceDao.search(param);

对应的Mapper取值:

<select id="search" 
            parameterType="java.util.Map" 
            resultType="com.bonc.wechat.entity.publicserver.Source">
	select * from wx_source 
        where 
	 <if test="keyword != null and keyword != ''">
        (title like #{keyword} or content like #{keyword}) and
         </if>
          type=#{type}
	  order by ordernum asc 
          limit #{page},#{pageSize};
</select>

4、参数为对象。

mapper中使用对象中的属性直接取值,或者【对象.属性】取值。

dao中的方法。

/*****使用对象传参*****/
 public int addUserComment(UserComment UC);



/*****对象中的属性*****/
private int id;
	private int department_id;		
	private String telphone;		
	private String content;			
	private String createtime; 

对应的Mapper取值:

<insert id="addUserComment" 
            parameterType="com.bonc.wechat.entity.publicserver.UserComment">
	insert into wx_user_comment
                   (department_id,
                    telphone,
                    content,
                    createtime) 
	values(#{department_id},
                   #{telphone},
                   #{content},
                   #{createtime});
</insert>

*使用【对象.属性】取值。

dao层:

/******此示例中直接省去dao层,service直接绑定mapper层******/

public PageResult findPanoramaPage(Page page) throws Exception{
    List<PageData> panoramaList = new ArrayList<PageData>();
    try {
	panoramaList = (List<PageData>)dao.findForList("PanoramaMapper.findPagePanorama", page);
	} catch (Exception e) {
		e.printStackTrace();
	    }
	PageResult pageResult = new PageResult(page.getTotalResult(),panoramaList);
	return pageResult;
}
对应的Mapper取值:

<select id="findPagePanorama" 
            parameterType="page" 
            resultType="pd">

	SELECT 
		a.id as id,
		a.project_code as projectCode,
		a.project_name as projectName,
		a.project_addr as projectAddr,
		a.project_type as projectType
	FROM 
		calm_project a 
	WHERE 
		a.is_valid=1	
	<if test="page.projectType != null and page.projectType != ''">
        AND a.project_type = #{page.projectType} 
        </if>
	<if test="page.keyword != null and page.keyword != ''">
       AND (a.project_name LIKE '%${page.keyword}%' OR a.project_code LIKE '%${page.keyword}%')
        </if>
        ORDER BY 
             a.sort
           
</select>

推荐使用第三和第四种,将所传的数据在controller层或者service层封装起来,传入mapper文件中取值。

至于mapper中 "#"取值和"$"取值的区别,本文不做解释,推荐一个博客,详细介绍了二者区别。

Curtain http://blog.csdn.net/u012191627/article/details/41895663 



  • 13
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值