0

私は次の方法を持っています、

public Project getProjectByUser(long userId)
            throws IOException {

        SqlSession sqlSession = null;
        Project response = null;

        Map<String, Long> projectParam = new HashMap<String, Long>();
        projectParam.put("userId", userId);

        try {

            sqlSession = DBSessionManager.getInstance().getSessionFactory()
                    .openSession();

            LOG.debug("SqlSession opened for Project mapper");

            ProjectMapper projectMapper = sqlSession
                    .getMapper(ProjectMapper.class);

            sqlSession.insert("getProjectByUserId", projectParam);
            sqlSession.commit();

            response = projectMapper.getProjectByUserId(userId);

        } finally {
            if (sqlSession != null) {
                sqlSession.close();
                LOG.debug("SqlSession closed");
            } else {
                System.out.println("_sql session null");
            }

        }

        return response;
    }

そしてxmlファイルには、次のコードがあります。

<select id="getProjectByUserId" resultMap="projectResultMap"
        parameterType="map" flushCache="false" useCache="false">
        SELECT
        project_id,
        user_id, project_name,
        created_date,
        last_updated_date FROM
        project
        WHERE
        user_id=#{userId}
    </select>

置換すると(値をハードコーディング)、user_id=#{userId}期待どおりのuser_id=1結果が返されます。しかし、値がマップに正しく設定されていてもクライアントアプリケーションから渡すと、クエリは正しく取得されず、null が返されます。ここで何が間違っていますか。

私の ProjectMapper クラスのメソッド定義は、

public Project getProjectByUserId(long userIdParam);

更新: 以下は、サービス インターフェイス メソッドです。

 @GET
 @Path("{userId}/{projectName}")
 @Produces("application/json")
 public Project getProjectByUser(@PathParam("userId") long userId);

上記の実装は、データレイヤーメソッドを呼び出します(最初に言及)

4

1 に答える 1

2

次のようにマッパーを定義してみてください。

public Project getProjectByUserId(@Param("userId") long userIdParam); 
于 2015-04-06T20:14:49.470 に答える