转:http://blog.csdn.net/dukangcheng/article/details/50823598
版权声明:本文为博主原创文章,未经博主允许不得转载。
使用MyBatis写动态SQL查询相比Hiberntate是非常方便的。select不仅能够根据mapper接口中的返回值自动匹配
查询selectOne还是selectList,而且在查询中还可以灵活的定制查询的方式,添加if 或者 choose等标签进行查询。
下面我们来看一看怎么通过这些标签灵活的定义查询的语句,最大限度的提升查询的效率:
我以一个自关联的商品类型为例ItemsType类型为例,商品类型里面有一个父类型即parentType属性,现在就需要通过
父类型查询商品类型,返回的结果是一个List<ItemsType>的集合类型,也就是相当于一棵树的查询,根据父节点查询子节点
在mapper.Java中代码如下:
上面方法中的参数是一个包装类,里面封装了父类节点的ID属性(int型):
因为MyBatis中如果直接使用int类型的会报 there is no getter for property named propertyType in java.lang.Integer
的异常,所以使用了包装类来避免这样的情况发生。
所以在mapper.xml中查询的方式是:
以上两种方式查询都能够得到正确的结果,语句中使用到的值是使用OGNL的方式传递的。设置好参数类型之后直接
使用ognl表达式就可以了!
个人总结,还请多多指!