10.3 MyBatis调用存储过程 10.3.2查询数据返回集合
项目的创建请看上一篇.
创建存储过程
在之前创建的mybatis
数据库中创建一个查询tb_user
表所有数据的存储过程。SQL
脚本如下:
1 2 3 4 5 6 7 8
| drop procedure if exists select_user; delimiter $$ create procedure select_user() begin select id,name,sex,age from tb_user; end $$ delimiter ;
|
mapper.xml映射
1 2 3 4 5
| <select id="selectUser" resultType="domain.User" statementType="CALLABLE"> {call select_user()} </select>
|
select
标签调用名为”select_user
“的存储过程查询所有User
数据并返回List
,查询到的每一条数据会被封装到User
对象中,这和之前执行SQL
语句返回数据的方式完全一致.
mapper接口方法
1
| List<User> selectUser();
|
测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class selectTest { public static void main(String[] args) { SqlSession sqlSession = null; sqlSession = SqlSessionFratoryTools.getSqlSession(); try { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> users = userMapper.selectUser(); users.forEach(user -> System.out.println(" " + user)); sqlSession.commit(); } catch (Exception e) { sqlSession.rollback(); e.printStackTrace(); } finally { if (sqlSession != null) { sqlSession.close(); } } } }
|
运行测试类,测试selectUser
方法将调用存储过程查询所有用户信息。控制台显示如下:
1 2 3 4 5 6 7 8 9 10
| DEBUG [main] ==> Preparing: {call select_user()} DEBUG [main] ==> Parameters: DEBUG [main] <== Total: 6 DEBUG [main] <== Updates: 0 User [id=1, name=小明, sex=男, age=21] User [id=2, name=小王, sex=男, age=22] User [id=3, name=小丽, sex=女, age=18] User [id=4, name=小芳, sex=女, age=18] User [id=5, name=小王, sex=男, age=22] User [id=6, name=小李, sex=男, age=23]
|
原文链接: 10.3 MyBatis调用存储过程 10.3.2查询数据返回集合