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

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

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

dao层方法为以下两种:

  1. /** 
  2.  * 单个int型 
  3.  */  
  4.     public List<UserComment> findByDepartmentId(int dapartmentId);  
  5.   
  6. /** 
  7.  * 单个string型 
  8.  */  
  9.  public Source findByTitle(String title);  
/**
 * 单个int型
 */
    public List<UserComment> findByDepartmentId(int dapartmentId);

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

对应的Mapper取值:

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

  1. /*单个int型*/  
  2. <select id=“findByDepartmentId”  resultType=“com.bonc.wechat.entity.publicserver.UserComment”>  
  3.     select * from wx_user_comment where   
  4.     department_id=#{departmentId}   
  5.     order by createtime desc;  
  6. </select>  
  7.   
  8.   
  9. /*单个string型*/  
  10. <select id=“findByTitle”  parameterType=“java.lang.String” resultType=“com.bonc.wechat.entity.publicserver.Source”>  
  11.     select * from wx_source where   
  12.         title=#{title};  
  13. </select>  
  14.   
  15.   
  16. /*****或者直接使用通用方法获取参数*****/  
  17.   
  18. <select id=“findByDepartmentId”  resultType=“com.bonc.wechat.entity.publicserver.UserComment”>  
  19.     select * from wx_user_comment where   
  20.     department_id=#{_parameter}   
  21.     order by createtime desc;  
  22. </select>  
  23.   
  24.   
  25.   
  26. <select id=“findByTitle”  parameterType=“java.lang.String” resultType=“com.bonc.wechat.entity.publicserver.Source”>  
  27.     select * from wx_source where   
  28.         title=#{_parameter};  
  29. </select>  
/*单个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. /*****1.正常传参*****/  
  2. public Dailyuserinfo findStutaByUserAndDaily(String username,String dailyid);  
  3.   
  4.   
  5. /*****2.注解传参*****/  
  6. public List<UserTab> selectUserListExceptUserId  
  7. (@Param(“USER_ID”)String USER_ID,   
  8.  @Param(“LIMIT_POS”)int LIMIT_POS,   
  9.  @Param(“LIMIT_SIZE”)int LIMIT_SIZE);  
/*****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层传入的参数名字相同。

  1. /****正常传参方式参数获取****/  
  2. <select id=“findStutaByUserAndDaily”  
  3.            parameterType=“java.lang.String”   
  4.            resultType=“com.thinkgem.jeesite.modules.dailynews.entity.Dailyuserinfo”>  
  5.   
  6.     select * from daily_user_info   
  7.     where login_name=#{username}   
  8.     And daily_id=#{dailyid};  
  9.   
  10. </select>  
  11.   
  12.   
  13. /****注解传参方式参数获取****/  
  14. <select id=“selectUserListExceptUserId”   
  15.             resultMap=“userResMap”>  
  16.   
  17.     select * from MH_USER   
  18.         where USER_ID!=#{USER_ID}   
  19.         and USER_STATE>9   
  20.         order by NICK_NAME   
  21.         limit #{LIMIT_POS},#{LIMIT_SIZE}  
  22. </select>  
/****正常传参方式参数获取****/
<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. /*****1.参数为map*****/  
  2. public List<Source> search(Map<String,Object> param);  
  3.   
  4. /***2.map的内部封装***/  
  5.      Map<String,Object> param=new HashMap<String,Object>();  
  6.     param.put(”page”, (page-1)*pageSize);  
  7.     param.put(”pageSize”,pageSize);  
  8.     param.put(”keyword”,“%”+keyword+“%”);  
  9.     param.put(”type”,type);  
  10.     List<Source> sources=sourceDao.search(param);  
/*****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取值:

  1. <select id=“search”   
  2.             parameterType=“java.util.Map”   
  3.             resultType=“com.bonc.wechat.entity.publicserver.Source”>  
  4.     select * from wx_source   
  5.         where   
  6.      <if test=“keyword != null and keyword != ””>  
  7.         (title like #{keyword} or content like #{keyword}) and  
  8.          </if>  
  9.           type=#{type}  
  10.       order by ordernum asc   
  11.           limit #{page},#{pageSize};  
  12. </select>  
<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中的方法。

  1. /*****使用对象传参*****/  
  2.  public int addUserComment(UserComment UC);  
  3.   
  4.   
  5.   
  6. /*****对象中的属性*****/  
  7. private int id;  
  8.     private int department_id;        
  9.     private String telphone;          
  10.     private String content;           
  11.     private String createtime;   
/*****使用对象传参*****/
 public int addUserComment(UserComment UC);



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

对应的Mapper取值:

  1. <insert id=“addUserComment”   
  2.             parameterType=“com.bonc.wechat.entity.publicserver.UserComment”>  
  3.     insert into wx_user_comment  
  4.                    (department_id,  
  5.                     telphone,  
  6.                     content,  
  7.                     createtime)   
  8.     values(#{department_id},  
  9.                    #{telphone},  
  10.                    #{content},  
  11.                    #{createtime});  
  12. </insert>  
<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层:

  1. /******此示例中直接省去dao层,service直接绑定mapper层******/  
  2.   
  3. public PageResult findPanoramaPage(Page page) throws Exception{  
  4.     List<PageData> panoramaList = new ArrayList<PageData>();  
  5.     try {  
  6.     panoramaList = (List<PageData>)dao.findForList(”PanoramaMapper.findPagePanorama”, page);  
  7.     } catch (Exception e) {  
  8.         e.printStackTrace();  
  9.         }  
  10.     PageResult pageResult = new PageResult(page.getTotalResult(),panoramaList);  
  11.     return pageResult;  
  12. }  
/******此示例中直接省去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取值:

  1. <select id=“findPagePanorama”   
  2.             parameterType=“page”   
  3.             resultType=“pd”>  
  4.   
  5.     SELECT   
  6.         a.id as id,  
  7.         a.project_code as projectCode,  
  8.         a.project_name as projectName,  
  9.         a.project_addr as projectAddr,  
  10.         a.project_type as projectType  
  11.     FROM   
  12.         calm_project a   
  13.     WHERE   
  14.         a.is_valid=1      
  15.     <if test=“page.projectType != null and page.projectType != ””>  
  16.         AND a.project_type = #{page.projectType}   
  17.         </if>  
  18.     <if test=“page.keyword != null and page.keyword != ””>  
  19.        AND (a.project_name LIKE ’% page.keyword {page.keyword}%’)  
  20.         </if>  
  21.         ORDER BY   
  22.              a.sort  
  23.              
  24. </select>  
<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 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值