參考:Result Maps
需求:我們常常會有SELECT Query回傳大量資料列的情形,與之前指定userid只回傳單一User不同,該如何做呢?方式很簡單,首先我們新增一個新的function getAllUsers:
< select id="getAllUsers" resultMap="userMap"> SELECT userid , email , Password, name FROM USER < select>
(原有getUserById在這邊先拿掉)請注意其中我們使用的屬性為resultMap而不是先前getUserById中使用的resultType,依照官方說明,resultMap與resultType只能選其中一個使用
public class UserDAO { //... public static ListgetAllUsers(SqlSessionFactory sqlSessionFactory) { SqlSession sqlSession = sqlSessionFactory.openSession(); try { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); return userMapper.getAllUsers(); } finally { sqlSession.close(); } } }
跟之前使用getUserById()沒甚麼差異,唯一差別就是回傳型態變成了 List<user>
private static void getAllUsers(SqlSessionFactory sqlSessionFactory){ Listlist = UserDAO.getAllUsers(sqlSessionFactory); for(User user : list) System.out.println(user); }
沒有留言:
張貼留言