mybatis通过传bean的方式来得到存储过程中游标的值list

      上一文章mybatis执行存储过程用的是map方式传参执行存储过程,返回游标值的时候,要进行强制类型转换,感觉不是很方便,下面介绍用传bean的方式来执行存储过程,从bean中得到游标的返回值.

bean类:

public class UserList
{
    private String iName; // 对应入参,名称一定要与调用的存储过程一样
    private List<User> users;// 对应出参(游标),名称一定要与调用的存储过程一样

    public String getIName()
    {
        return iName;
    }

    public void setIName(String name)
    {
        iName = name;
    }

    public List<User> getUsers()
    {
        return users;
    }

    public void setUsers(List<User> users)
    {
        this.users = users;
    }

}

存储过程:

CREATE OR REPLACE Procedure getUSERINFOs(iName in varchar,cur_arg out Sys_Refcursor)
is

begin

 open cur_arg for Select * From USERINFO t where t.NAME like '%'||iName||'%';
End;

userMapper.xml:

<resultMap type="user" id="<span style="color:#FF0000;">getUserLists</span>"> //定义映射,将游标返回的值封装成user放到users列表中
		<id column="id" property="id" />
		<result column="name" property="name" />
</resultMap>

<select id="getUserByProc"  statementType="CALLABLE" parameterType="com.chenjun.UserList" >
		{call getUSERINFOs(#{iName,jdbcType=VARCHAR,mode=IN},#{users,jdbcType=CURSOR,javaType=ResultSet,mode=OUT,resultMap=<span style="color:#FF0000;">getUserLists</span>})}
	</select>

dao接口:

public void getUserByProc(UserList bean);

测试方法:

String userConfig = "com/chenjun/mybatis-config.xml";
 Reader reader = Resources.getResourceAsReader(userConfig);

            // ========== 与hiberate相似,在hibernate中叫sessionFactory及session,而在mybatis中以sql开头,可能因为mybatis中是以sql为操作对象的原因
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserDao userDao = sqlSession.getMapper(UserDao.class);
 UserList bean = new UserList();
        bean.setIName("张");
        userDao.getUserByProc(bean);

        List<User> users = bean.getUsers();

        for (User user : users)
        {
            System.out.println(user.getName());
        }

结果:

张四
张五
张三

这样的操作是不是比传map更好懂,只不过要多写个bean来作参数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值