Mybatis框架中Mapper文件传值参数获取。【Mybatis】
2016-11-22 11:55
330 查看
Mybatis框架中,Mapper文件参数获取一般有以下几种:
1、参数个数为1个(string或者int)
dao层方法为以下两种:
对应的Mapper取值:
取值时应当注意,参数名字应该与dao层传入的参数名字相同。
2、参数个数为多个。
dao层方法:
对应的Mapper取值:
取值时应当注意,参数名字应该与dao层传入的参数名字相同。
3、参数为map的形式。
mapper中使用map的key取值。
dao中的方法。
对应的Mapper取值:
4、参数为对象。
mapper中使用对象中的属性直接取值,或者【对象.属性】取值。
dao中的方法。
对应的Mapper取值:
*使用【对象.属性】取值。
dao层:
推荐使用第三和第四种,将所传的数据在controller层或者service层封装起来,传入mapper文件中取值。
至于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
相关文章推荐
- Mybatis框架中Mapper文件传值参数获取。【Mybatis】
- Mybatis框架中Mapper文件传值参数获取
- mybatis操作数据库是如果mapper文件中的id和java代码中的参数名字不同是报的错
- mybatis中 mapper.xml文件中,获取数组中指定的位置的数据
- SSM框架中Mybatis向映射文件(XML)的<insert>元素传入多个数组参数的问题
- Mybatis --- 映射文件、参数处理、参数值的获取、select元素
- Mybatis第六篇【配置文件和映射文件再解读、占位符、主键生成与获取、Mapper代理】
- 【MyBatis框架】mapper配置文件-关于动态sql
- 【MyBatis框架】mapper配置文件-foreach标签
- MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
- Mybatis --- 映射文件、参数处理、参数值的获取、select元素
- 【MyBatis框架】mapper配置文件-foreach标签
- Java数据持久层框架 MyBatis之API学习六(Mapper XML 文件详解)
- mybatis中接口的参数和mapper文件中的对映关系
- 框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射
- 01_MyBatis EHCache集成及所需jar包,ehcache.xml配置文件参数配置及mapper中的参数配置
- 【MyBatis框架】mapper配置文件-关于动态sql
- 【MyBatis框架】mapper配置文件-foreach标签
- Java数据持久层框架 MyBatis之API学习五(Mapper XML 文件)
- MyBatis框架中Mapper方法中的参数问题解决方案