1

私は単純な CRUD アプリケーションを作成しています (Oracle データベースで JSF 2.0 と mybatis3 を使用しています)。これまでのところ、照会したデータ (a 内) を表示中にエラーが発生しました。私はこれが本当に厄介であることを知っていますが、私が間違っていることに対するアドバイスが欲しいです. ありがとう !

EDIT 1:私はまた、プレーンなJavaプロジェクトを作成し、関数をテストして、それらが何かを返すかどうかを確認し、正常に機能しました...

編集 2:ここにログを記録します。エラーはありません http://pastebin.com/gYyqBX7W

UserMapper.xml の一部を次に示します。

<resultMap id="result" type="User">
    <result property="username" column="USER_ID" />
    <result property="userDescription" column="USER_DESC" />
    <result property="password" column="USER_PWD" />
</resultMap>

<select id="getAllUsers" resultMap="result"> 
SELECT USER_ID as username, USER_DESC as userDescription,
    USER_PWD as password FROM SSLS_GUI.USERS
</select>

UserMapper.java ファイル:

package com.mybatis.mappers;
import java.util.List;
import com.optsol.beans.User;

public interface UserMapper {

public List<User> getAllUsers();

}

私が興味を持っている UserService.java の部分:

@ManagedBean(name = "userServices")
public class UserService {
public List<User> getAllUsers() {
    SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory()
            .openSession();
    try {
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        return userMapper.getAllUsers();
    } finally {
        sqlSession.close();
    }
}

ファクトリ インスタンスを取得する MyBatisUtil.java ファイル:

package com.mybatis.service;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
private static SqlSessionFactory factory;

private MyBatisUtil() {
}

    static {
    String resource = "com/mybatis/config/mybatis-config.xml";
    Reader reader = null;
    try {

        reader = Resources.getResourceAsReader(resource);
    } catch (IOException e) {
        throw new RuntimeException(e.getMessage());
    }
    factory = new SqlSessionFactoryBuilder().build(reader);
}

    public static SqlSessionFactory getSqlSessionFactory() {
    return factory;
}
}

User.java (ゲッターとセッターなし):

package com.optsol.beans;

import javax.faces.bean.ManagedBean;
@ManagedBean(name = "user")
public class User {

    private String username;
    private String userDescription;
    private String password;
}

データベースからのデータを表示しようとする index.xhtml:

<h:dataTable value="#{userService.getAllUsers}" var="u">
    <h:column>
        <f:facet name="header">
                USERNAME
            </f:facet>
                #{u.username}
        </h:column>

    <h:column>
        <f:facet name="header">
                USER DESCRIPTION
            </f:facet>
                #{u.userDescription}
        </h:column>
                <h:column>
        <f:facet name="header">
                PASSWORD(HASHED)
            </f:facet>
                #{u.password}
        </h:column>
</h:dataTable>
4

1 に答える 1

0

プロパティの名前が列の名前と一致しません。

<resultMap id="result" type="User">
    <result property="username" column="USER_ID" />
    <result property="userDescription" column="USER_DESC" />
    <result property="password" column="USER_PWD" />
</resultMap>

SQL のエイリアスを削除します。

<select id="getAllUsers" resultMap="result"> 
    SELECT USER_ID, 
           USER_DESC,
           USER_PWD
      FROM SSLS_GUI.USERS
</select>
于 2013-08-13T14:46:58.853 に答える