mybatis调用方法包路径问题

如:

SqlSession session = MyBatisUtil.getSqlSession();
List<Users> usersList = session.selectList("com.dao.UsersDao.selectAll");

......

可能会发现一个异常:java.lang.exceptionininitializererror....

改成:

SqlSession session = MyBatisUtil.getSqlSession();
List<Users> usersList = session.selectList("selectAll");

执行成功,


原因是mappers中只引用了一个映射文件

  <mappers>
    <mapper resource="com/pojo/UsersMapper.xml" />
  </mappers>


如果有多个映射文件就允许加包路径,如果不加会自动搜索,但是一个映射文件就不允许加包路径.

另外如果有多个mappers有相同的id,必须指定包路径.

使用MyBatis调用自定义类型存储过程的步骤如下: 1. 首先,确保已经定义了自定义类型。在数据库中创建一个类型,例如: ``` CREATE TYPE my_custom_type AS OBJECT ( id NUMBER, name VARCHAR2(100), email VARCHAR2(100) ); ``` 2. 在MyBatis的配置文件中,配置数据库连接和Mapper文件路径。 3. 创建一个Mapper接口和对应的Mapper XML文件,用于调用存储过程。在Mapper接口中定义一个方法,例如: ``` void callCustomProcedure(Map<String, Object> params); ``` 4. 在Mapper XML文件中,编写对应的SQL语句,如下所示: ```xml <insert id="callCustomProcedure" statementType="CALLABLE"> {call custom_procedure(#{param1, mode=IN, jdbcType=VARCHAR}, #{param2, mode=IN, jdbcType=INTEGER}, #{result, mode=OUT, jdbcType=ARRAY, javaType=java.sql.Array, resultMap=CustomResultMap})} </insert> ``` 这里的`custom_procedure`是自定义的存储过程名称,`param1`和`param2`是输入参数,`result`是输出参数。`CustomResultMap`是一个自定义的ResultMap,用于将结果映射到Java对象中。 5. 在Java代码中调用方法,传入相应的参数,例如: ```java Map<String, Object> params = new HashMap<>(); params.put("param1", "value1"); params.put("param2", 123); mapper.callCustomProcedure(params); ``` 在调用存储过程后,输出参数将含在`params`中,可以根据需要进行处理。 总结起来,通过以上步骤,我们可以使用MyBatis调用自定义类型存储过程,并处理输出参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值