t_userというテーブルがあり、このテーブルは以下の4つのカラムを持っています
user_id,user_name,user_password,user_email
また、10件のデータがあります。
このテーブルからuser_id,user_nameを取り出そうとしているのですが
Select文を実行後、結果を代入したListの中身を確認すると
10個nullが入っており、値が取れていない状況です。
※実行したsqlは後述
xmlに記載しているselect文をローカルのmysql環境で実行した場合、
結果が取れることは確認したため、sqlの構文に誤りはないと考えています。
また、結果を代入したListにnullがテーブルに存在するデータ文(10個)入っているため、
SQL自体は実行されていると考えています。
原因をご教授いただければ幸いです。
いかにソースを記載します。
メインクラス
package spring.test; import java.io.IOException; import java.nio.file.AccessDeniedException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class HelloWorldTest { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "file:/Users/nagami/Documents/workspace-sts-ver2/MyBatis/WebContent/WEB-INF/SpringTest.xml"); SpringBean bean = (SpringBean) context.getBean("helloWorld"); bean.show(); } }
メインクラスで読み込んでいるxml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <bean id="helloWorld" class="spring.test.SpringBean"> </bean> <context:component-scan base-package="spring.test" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test_app" /> <property name="username" value="root" /> <property name="password" value="hogehoge" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:/spring/test/sql.xml" /> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean class="spring.test.UserDaoImpl"> <property name="session" ref="sqlSession" /> </bean> </beans>
ビーンクラス
package spring.test; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; public class SpringBean { @Autowired private UserDao dao; public void show() { // listにnullが10個入ってきている。3行下でぬるぽで落ちる List<User> list = dao.getUserList(); for (User user : list) { System.out.println(user.getUserId() + "-" + user.getUserName()); } } }
モデルクラス
package spring.test; public class User { String userId; String userName; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
インターフェース
package spring.test; import java.util.List; public interface UserDao { public List<User> getUserList(); }
sql実行クラス
package spring.test; import java.util.List; import org.apache.ibatis.session.SqlSession; public class UserDaoImpl implements UserDao { private SqlSession session; public void setSession(SqlSession ss) { this.session = ss; } public List<User> getUserList() { return session.selectList("test.sql.selectUser"); } }
sqlを記載したxml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test.sql"> <select id="selectUser" resultType="spring.test.User"> select user_id,user_name from t_user </select> </mapper>
ローカルで同様のselect文実行時のEVD
追記
package spring.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; public class UserDaoImpl implements UserDao { private SqlSession session; public void setSession(SqlSession ss) { this.session = ss; } public List<User> getUserList() { // 結果取得 List<Map<String, Object>> result = session.selectList("test.sql.selectUser"); System.out.println("件数:" + result.size()); result.forEach(row -> { row.forEach((columnName, value) -> { System.out.printf("columnName=%s, value=%s%n", columnName, value); }); }); return session.selectList("test.sql.selectUser"); } }
コンソール出力内容
追記.2

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。