刚接触mybatis,数据库是sql server,可能问题比较幼稚,希望能提供个正确的例子让我体会下
在写搜索功能的查询语句,大部分数据查询来自表proinfo,例如下面对网页提交的完工时间范围进行搜索
<if test="edatestart != null and edatestart != ''">
AND a.enddate <![CDATA[>=]]> #{edatestart}
</if>
<if test="edateend != null and edateend != ''">
AND a.enddate <![CDATA[<=]]>#{edateend}
</if>
现在想查询该项目颜色是否为黑需要对表procolor进行搜索,是否可以使用如下的方法进行查询
<if test="isblack != null and issinglepro != ''">
AND a.isblack = <select resultType="Boolean">
SELECT color
FROM procolor
WHERE procolor.color = #{color}
</select>
</if>
那如果我希望在if中嵌套查询语句是否可行,比如我条件是表A的数据a等于表B的数据b,满足就将表A的数据a1和表C的数据c进行比较这样子
我仿写的语句都是如下格式
<sql id="tbpro">
a.prjnum AS "prjnum",
a.prjname AS "prjname"
</sql>
<select id="get" resultType="tbproject">
SELECT
<include refid="tbpro"/>
FROM tbproject a
<include refid="tbx"/>
WHERE a.id = #{id}
</select>
下面是我努力理解的各段意义
第一个sql定义了数据库数据的简写,不在需要用a.xxx来表示
但是这个a.xxx是哪里定义的,我为什么不能用b.xxx或者c.xxx?
然后select后面的id是用来对应java调用语句的,resultType是定义查询返回参数类型,还有个传入参数类型的定义
后面include refid就是调用了前面sql里面的定义(写到这我是不是可以把查询语句写sql标签然后后面调用),最后的#{id}我理解的是从网页传过来的数据的id,判断和表tbproject(简写为a)中id元素是否相等