package com.xtakagi.test.dao.impl; import java.io.IOException; import java.io.Reader; import java.nio.charset.Charset; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; /** * IBatis制御クラス * * @author xtakagi * @version 1.0.0 * */ public class IBatisExecutor { /** ログ設定 */ private static Log log = LogFactory.getLog(IBatisExecutor.class); /** SQLマッパー */ private static SqlMapClient sqlMapper; /** * コンストラクタ * */ private IBatisExecutor() { super(); } static { Reader reader = null; try { Resources.setCharset(Charset.forName("UTF-8")); reader = Resources.getResourceAsReader("com/xtakagi/test/dao/SqlMapConfig.xml" ); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); } catch (IOException ex) { throw new RuntimeException("SqlMapperの生成に失敗しました" ,ex); } finally { if (null != reader) { try { reader.close(); } catch (IOException ex) { log.warn("Readerのクローズに失敗しました" ,ex); } } } } /** * SQLマップインスタンスの取得 * * @return SqlMapClient : SQLマップクライアント */ public static SqlMapClient getSqlMapInstance() { return sqlMapper; } }
DAO実装クラスの雛形
package com.xtakagi.test.dao.impl; import java.sql.SQLException; import java.util.List; import com.xtakagi.test.dao.UserDao; import com.xtakagi.test.dto.UserDto; import com.xtakagi.utils.Utils; /** * ユーザDAO実装クラス * * @author xtakagi * */ public class UserDaoImpl implements UserDao { /** * {@inheritDoc} */ @Override @SuppressWarnings("unchecked") public UserDto getUser(final String loginId) { try { ListuserList = IBatisExecutor.getSqlMapInstance().queryForList( "SelectUserByLoginId" , loginId); if (Utils.isAvailable(userList)) { return userList.get(0); } return null; } catch (SQLException ex) { throw new RuntimeException("SQL実行例外は発生しました" ,ex); } } /** * {@inheritDoc} */ @Override @SuppressWarnings("unchecked") public ListgetUserList() { try { return IBatisExecutor.getSqlMapInstance().queryForList( "SelectAllUser" ); } catch (SQLException ex) { throw new RuntimeException("SQL実行例外は発生しました" ,ex); } } }
DAO実装クラスの雛形
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <resultMap id="UserDto" class="com.xtakagi.test.dto.UserDto"> <result property="userId" column="user_id" /> <result property="userName" column="user_name" /> <result property="loginId" column="login_id" /> <result property="password" column="password" /> </resultMap> <select id="SelectAllUser" resultMap="UserDto"> SELECT user_id, login_id, password, user_name FROM user_tbl </select> <select id="SelectUserByLoginId" parameterClass="string" resultMap="UserDto"> SELECT user_id, login_id, password, user_name FROM user_tbl WHERE login_id = #loginId# </select> </sqlMap>