mybatis.parameters
2017-11-27 16:38:17 3 举报
登录查看完整内容
mybatis的parameter使用详解
作者其他创作
大纲/内容
使用参数
经过上面方法的处理后,在MapperMethod 中会继续往下调用命名空间方式的方法:从这之后开始按照统一的方式继续处理入参。
DefaultParameterHandler.java
当collection=\"userList\
userList的值分四种情况。value == null,这种情况直接抛出异常BuilderException。value instanceof Iterable,实现Iterable接口的直接返回,如Collection的所有子类,通常是List。value.getClass().isArray()数组的情况,这种情况会转换为List返回。value instanceof Map如果是Map,通过((Map) value).entrySet()返回一个Set类型的参数。
map.put(\"collection\
中默认情况下写的array和list(Map类型没有默认值map)
if (boundSql.hasAdditionalParameter(propertyName)) { // issue #448 ask first for additional params value = boundSql.getAdditionalParameter(propertyName);} else if (parameterObject == null) { value = null;} else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) { value = parameterObject;} else { MetaObject metaObject = configuration.newMetaObject(parameterObject); value = metaObject.getValue(propertyName);}
接口形式入参处理
处理参数MapperMethod.java public Object convertArgsToSqlCommandParam(Object[] args)
复杂对象或者Map类型一般都是我们需要注意的地方,这种情况下,就必须保证入参包含这些属性,如果没有就会报错。这一点和可以参考上面有关MetaObject的地方。
DefaultSqlSession.java中的wrapCollection方法
从第3种情况来看,建议各位有多个入参的时候通过@Param指定参数名,方便后面(动态sql)的使用。
{ \"_parameter\":{ \"param1\
收藏
0 条评论
回复 删除
下一页