1. 程式人生 > >mybatis框架對映檔案配置錯誤異常:org.springframework.web.util.NestedServletException

mybatis框架對映檔案配置錯誤異常:org.springframework.web.util.NestedServletException

異常資訊

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.String'
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:986)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

異常檔案位置

<!--查詢一條方法-->
    <select id="findOrdersById" parameterType="String" resultMap="ordersMap" >
        SELECT * from orders
        <where>
            <if test=" id != null id != '' ">
                 id = #{id}
            </if>
        </where>
    </select>

錯誤原因

parameterType="String"   ----------->id 
String 型別對應的 id 在進行條件判斷時找的位置不對,文中找的是class java.lang.String
實際要找的位置是,你id 所在的實體類

解決措施

<!--查詢一條方法-->
    <select id="findOrdersById" parameterType="String" resultMap="ordersMap" >
        SELECT * from orders
        <where>
            <if test=" _parameter!= null _parameter!= '' ">
                 id = #{id}
            </if>
        </where>
    </select>

在:標籤的 test 屬性中寫的是物件的屬性名,如果是包裝類的物件要使用 OGNL 表示式的寫法 在這裡插入圖片描述