问题概述

在基于微服务架构风格的项目开发过程中,为了提高快速开发的目的,提高开发效率,集成了 MyBatisPlus,对于 MyBatisPlus 封装的 CRUD API 接口已经非常强大了,但是有时还是需要使用其动态 SQL 的拼接,在传参时遇到了个梗,异常信息 “ nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'jobNumber' in 'class java.lang.Integer' ” 

如下图:

 

 

解决办法

各种摸索,各种尝试,得出了三种解决办法,在这儿记录一下(只记录中的两种),

1、在入参的时候,加入直接 @Param ,其 value 属性值就是其入参的名称,

Java 代码示例代码如下:

public interface LoginLogMapper
        extends BaseMapper<LoginLog>
{

    List<LoginLog> getLoginLogByPage(
            @Param(value = "jobNumber")
                    Integer jobNumber
    );
}

SQL 代码示例如下:

<select id="getLoginLogByPage" resultType="com.mcp.entity.LoginLog">
	SELECT l.id, l.job_number, l.name, l.createDate, l.ip_addr
		, l.remark
	FROM loginlog l
	<where>
		<if test="jobNumber != null" >
			and l.job_number = #{jobNumber}
		</if>
	</where>
	GROUP BY l.today_date, l.ip_address;

</select>

添加 @Param 注解后,就可以成功请求处理,如下图:

 

2、Java 代码不变,只修改 SQL ,SQL中的入参使用MyBatis的一个内置对象 “ _parameter ”,

Java 示例代码如下:

public interface LoginLogMapper
        extends BaseMapper<LoginLog>
{

    List<LoginLog> getLoginLogByPage(Integer jobNumber);
}

示例SQL如下:

<select id="getLoginLogByPage" resultType="com.mcp.entity.LoginLog">
	SELECT l.id, l.job_number, l.name, l.createDate, l.ip_addr
		, l.remark
	FROM loginlog l
	<where>
		<if test="_paramete != null" >
			and l.job_number = #{_paramete}
		</if>
	</where>
	GROUP BY l.today_date, l.ip_address;

</select>

 

 

 

 

 


 好了,关于 There is no getter for property named 'jobNumber' in 'class java.lang.Integer' 的解决办法  就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者:华    仔
联系作者:who.seek.me@java98k.vip
来        源:CSDN (Chinese Software Developer Network)
原        文:https://blog.csdn.net/Hello_World_QWP/article/details/86504767
版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐