私は単純な 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>