![](/img/trans.png)
[英]How to insert java HashMap keys and values as columns in database using mybatis
[英]How to pass argument from Java using HashMap to myBatis?
如何使用Java在myBatis存储过程中将输入参数作为数组传递?
就我而言,我传递Long []数组
我想在存储过程输入中将值作为数组传递,并且尝试将jdbcType = ARRAY放入,但出现错误,
ClassCastException java.lang.Long cannot convert java.sql.Array
你能帮忙代码吗
我的代码中有错误...?
供您参考,我添加了我的代码。 这是我的用户春季DAO层。 从这里我需要打电话给myBatis
UserDAO.java
@Autowired
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
super.setSqlSessionTemplate(SqlSessionTemplate)
}
public List<User> getUserList(List<Long> userId) {
Long[] arr = userId.toArray(new Long[userId.size()]);
Map<String,Object> queryParameter = new HashMap<String,Object>();
queryParameter.put("P_PARAM_ID_ARR",arr);// Here i got error how to convert Long[] to java.sql.Array.
this.sqlSession().selectList("getUserDatas",queryParameter);
List<User> userList = (List<User>)queryParameter.get("P_RST");
}
这是我的myBatis查询xml文件userqueries.xml
<mapper namespace = "userDAO">
<resultMap id= "userMapping" type="com.User">
<result property="id" column="USER_ID" javaType="java.lang.Long"></result>
<result property="name" column="USER_NAME" javaType="java.lang.String"></result>
</resultMap>
<select id="getUserDatas" parameterType="java.util.Map" statementType="CALLABLE" resultMap="userMapping">
{ call PROC_USER(#{P_PARAM_ID_ARR, jdbcType=ARRAY, mode=IN}, #{P_RST, javaType=java.sql.ResultSet, jdbcType=CURSOR, mode=OUT, resultMap="userMapping"})}
</select>
</mapper>
当我尝试朗姆酒时,我总是会得到500错误。
如何在过程中将数组作为参数传递?
谢谢,请帮助我.....
JDBC中的数组需要通过java.sql.Connection上的factory方法创建。 像这样:
Long[] arr = userId.toArray(new Long[userId.size()]);
Array sqlArray = sqlSession().getConnection().createArrayOf("int", arr);
Map<String,Object> queryParameter = new HashMap<String,Object>();
queryParameter.put("P_PARAM_ID_ARR",sqlArray);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.