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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis框架中Mapper文件传值参数获取。Mybatis相关的知识,希望对你有一定的参考价值。

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

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

dao层方法为以下两种:

[java] view plain copy
 
 技术分享技术分享
  1. /** 
  2.  * 单个int型 
  3.  */  
  4.     public List<UserComment> findByDepartmentId(int dapartmentId);  
  5.   
  6. /** 
  7.  * 单个string型 
  8.  */  
  9.  public Source findByTitle(String title);  

 

对应的Mapper取值:

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

[html] view plain copy
 
 技术分享技术分享
  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>  

2、参数个数为多个。

dao层方法:

 

[java] view plain copy
 
 技术分享技术分享
  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);  

 

对应的Mapper取值:

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

 

[html] view plain copy
 
 技术分享技术分享
  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>  

3、参数为map的形式。

 

mapper中使用map的key取值。

dao中的方法。

 

[java] view plain copy
 
 技术分享技术分享
  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);  

对应的Mapper取值:

 

[html] view plain copy
 
 技术分享技术分享
  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>  

4、参数为对象。

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

dao中的方法。

 

[java] view plain copy
 
 技术分享技术分享
  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;   

对应的Mapper取值:

 

 

[html] view plain copy
 
 技术分享技术分享
  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>  

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

dao层:

 

[java] view plain copy
 
 技术分享技术分享
  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. }  

对应的Mapper取值:

 

 

[html] view plain copy
 
 技术分享技术分享
  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}%‘ OR a.project_code LIKE ‘%${page.keyword}%‘)  
  20.         </if>  
  21.         ORDER BY   
  22.              a.sort  
  23.              
  24. </select>  

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

以上是关于Mybatis框架中Mapper文件传值参数获取。Mybatis的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis Mapper接口是如何找到实现类的-源码分析

Mybatis多个参数传值方法

MyBatis框架

MyBatis框架

mybatis(mapper映射文件)

mybatis框架源码学习