楼主想实现的就是根据传入参数的不同值执行不同的Sql,可能我描述的比较苍白,直接上代码吧!
开发环境:mybatis.net+mvc
map:
<select id="GetInfoByAreaId" parameterType="" resultMap="InfoResult"> select * from [Info] <where> <if test="AreaPid==1"> AreaId=#{AreaId} </if> </where> </select>
调用:
InfoTops model = new InfoTops() { AreaId = 380, AreaPid = 1 }; _infoTopsRepository.Get("GetInfoByAreaId", model);
查询出的结果却不是AreaId等于380的那条信息,各位园友说说我哪里用错,欢迎指出错误!
MyBatis.net的资料确实很少,但还是解决了这个问题,学习起来没有Java那么方便,只能尽自己努力了,奔跑吧,程序猿!
parameterType设置为InfoTops试试。
<select id="GetInfoByAreaId" parameterType="InfoTops" resultMap="InfoResult"> select * from [Info] <where> <if test="AreaPid==1"> AreaId=#{AreaId} </if> </where> </select>
这个我试过了,也一样,还是不行!取的数据还是不对!
@晓菜鸟: 加上空格试试
<if test="AreaPid == 1">
@dudu: 还是不对,加上空格也不行。传入Model是这样用的吗?用不用Model.AreaId?
@dudu: 我看的他的博客,http://www.cnblogs.com/dongying/p/4092662.html ,感觉都一样啊,为什么就是不行?
@dudu: 是不是 .net 里面不能这样用?
@晓菜鸟: 原来是.NET,我还以为是Java,.NET中叫MyBatis.NET
@dudu: 额,是叫MyBatis.net,好吧,我忘记敲完整了,坑了你了,Net方面的资料好少,所以....
@dudu: MyBatis.net有没有类似<where>标签的语法?
@dudu: 我现在的写法必须得加上 where 1=1 ,感觉好多余。
<select id="GetInfoTops" parameterType="Hashtable" resultMap="InfoTopsResult"> <![CDATA[select * from InfoTops where 1=1]]> <dynamic prepend="AND"> <isNotEmpty property="Id"> Id = #Id# </isNotEmpty> </dynamic> </select>
我这里拿根据Id查询可能不太合适,但是我想表达的意思就是组合多个条件进行查询。
@dudu: 谢谢站长,我自己找到了!:)