mybatis中传入String类型参数的问题

1. 出现的问题

需求是想写一个按公司名字查询公司列表的功能,最开始的代码如下 
Dao层接口如下

@MyBatisDao
public interface OfficeDao extends TreeDao<Office> {
    List<Office> findCompanyNameList(String name);
}

mybatis的xml代码:

<select id="findCompanyNameList" parameterType="java.lang.String" resultType="com.pds.modules.sys.entity.Office">
    SELECT id,name FROM sys_office  where o.del_flag = ‘1‘
       <if test="name!= null and name!= ‘‘">
           AND name LIKE concat(‘%‘,#{name},‘%‘)
       </if>
</select>

这样写会报错,大体意思是name没有Getter方法。

2. 解决办法

2.1 解决办法1

在接口参数里加上mybatis中的@param注解

@MyBatisDao
public interface OfficeDao extends TreeDao<Office> {
    List<Office> findCompanyNameList(@Param("name")String name);
}
<select id="findCompanyNameList" parameterType="java.lang.String" resultType="com.pds.modules.sys.entity.Office">
    SELECT id,name FROM sys_office  where o.del_flag = ‘1‘
       <if test="name!= null and name!= ‘‘">
           AND name LIKE concat(‘%‘,#{name},‘%‘)
       </if>
</select>

2.2 解决办法2

在xml的if里用”_parameter” 代表参数

<select id="findCompanyNameList" parameterType="java.lang.String" resultType="com.pds.modules.sys.entity.Office">
    SELECT id,name FROM sys_office  where o.del_flag = ‘1‘
       <if test="_parameter!= null and _parameter!= ‘‘">
           AND name LIKE concat(‘%‘,#{name},‘%‘)
       </if>
</select>

2.3 两种方法区别

可以看出,_parameter不能区分多个参数,而@param能。所以@param能传多个这样的参数

原文地址:https://www.cnblogs.com/thiaoqueen/p/9634495.html

时间: 2024-10-08 13:35:48

mybatis中传入String类型参数的问题的相关文章

mybatis中传入参数的几种方式

第一种: Dao层的方法 Public User selectUser(String name,String password); 对应的Mapper.xm <select id="selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{0} and user_password=#{1} </select> 第二种: 该方法采用M

foreach属性-动态-mybatis中使用map类型参数,其中key为列名,value为列值

http://www.cnblogs.com/anruy/p/5942044.html Integer updateA(@Param("A") Map<String, Double> A); <update id="updateA" parameterType="java.util.Map"> <foreach collection="A.keys" item="key" in

mybatis中的查询语句in用法的相关问题

在开发的时候,mybatisl中使用in的时候会遇到一些问题,如果我们传的参数是String类型,以“,”来进行隔开的,例如:参数是0,1,2字符串,mybatis中的语句如下 <select id="findByName" parameterType="string" resultType="com.domain.Factory"> SELECT * FROM FACTORY WHERE ID IN (#{ids}) </se

mybatis仅传入一个String类型参数报错

mybatis中仅传入一个String类型参数时,不可以用 以下方式 List<Map<String,Object> selectEmployee(String time) 这种方式传参会报错There is no getter for property named 'id' in class 'java.lang.String' 目前我知道有两种方式解决问题 1.用 _parameter <if test="_parameter !=null and _paramete

mybatis中 无效的比较: invalid comparison: java.util.Date and java.lang.String

invalid comparison: java.util.Date and java.lang.String无效的比较 解决: 把mapper.xml中 <if test="XXX !=null and XXX!=''"> XXX!=' ' 去掉就OK 原因: 时间与空字符串比较是无效的的原因是mybatis中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串''进行对比判断则会引发异常. 所以在上面的代码中去该该判断, 只保留非空判断就正常了 原文

mybatis中association的column传入多个参数值

顾名思义,association是联合查询. 在使用association中一定要注意几个问题.文笔不好,白话文描述一下. 1: <association property="fncg_PD_QRY_MANAGE" column="###" select="###" /> fncg_PD_QRY_MANAGE 是哪来的?看红色部分, public class FNCG_PD_QRY extends BasePO{ private St

Mybatis中传参包There is no getter for property named &#39;XXX&#39; in &#39;class java.lang.String&#39;

一.发现问题 <select id="queryStudentByNum" resultType="student" parameterType="string"> select num,name,phone from student <where> <if test = " num!=null and num!='' "> AND num = #{num} </if> <

Mybatis 传入List类型参数,报错:There is no getter for property named &#39;__frch_item_0&#39; in

错误如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named '__frch_item_0' in 'class com.asiacloud.core.model.PageModel' at org.mybatis.spring.MyBatisEx

Mybatis中传参包There is no getter for property named &#39;roomName&#39; in &#39;class java.lang.String&#39;

一.发现问题 <select id="queryStudentByNum" resultType="student" parameterType="string"> select num,name,phone from student  <where> <if test = " num!=null and num!='' ">AND num = #{num}</if></w