Ibatis的SQL语句有哪些写法,下面这个写法错在哪里?不能从数据库中查到数据。。。
<sqlMap><typeAliasalias="User"type="com.name.demo.pojo.User"/><selectid="queryAll"res...
<sqlMap>
<typeAlias alias="User" type="com.name.demo.pojo.User"/>
<select id="queryAll" resultClass="User">
<![CDATA[
select * from huser order by u_id
]]>
</select>
<select id="selectUserByNameAndPwd" parameterClass="String" resultClass="User">
select *
from huser
where
<isNotEmpty prepend=" AND " property="name">
LOGIN_NAME = #name# </isNotEmpty>
<isNotEmpty prepend=" AND " property="password">
PASS_WORD = #password# </isNotEmpty>
</select>
</sqlMap> 展开
<typeAlias alias="User" type="com.name.demo.pojo.User"/>
<select id="queryAll" resultClass="User">
<![CDATA[
select * from huser order by u_id
]]>
</select>
<select id="selectUserByNameAndPwd" parameterClass="String" resultClass="User">
select *
from huser
where
<isNotEmpty prepend=" AND " property="name">
LOGIN_NAME = #name# </isNotEmpty>
<isNotEmpty prepend=" AND " property="password">
PASS_WORD = #password# </isNotEmpty>
</select>
</sqlMap> 展开
3个回答
展开全部
<select id="queryAll" resultClass="User">
<![CDATA[
select * from huser order by u_id
]]>
</select>
resultClass是User,如果你sql语句查询出来的结果集合大于1,那岂不是会有问题(可以返回一个Map,你自己必须要定义)
parameterClass="String"极端情况下,你的name和password都有值的话,你该咋办?如果说name和password都为空呢 ,最后的sql=select * from huser where 这又该怎么执行呢?
所以 如luoting2762所说,where 1=1 比较稳妥。
id=selectUserByNameAndPwd的标签,你可以传递一个Map参数过来(默认不用写) ,或者传递一个对象过来也可以。
展开全部
parameterClass="hasMap" 换成 hasMap 后台 把 值 放到 HasMap hasMap =new HasMap
hasMap.put("name",huser.name);
hasMap.put("password",huser.password);
你的查询条件是并且的关系 select * from huser where LOGIN_NAME='admin' and PASS_WORD ='123456'
如果你这用 parameterClass="String" 类型 只能传过来一个参数 select * from huser where LOGIN_NAME='admin'
hasMap.put("name",huser.name);
hasMap.put("password",huser.password);
你的查询条件是并且的关系 select * from huser where LOGIN_NAME='admin' and PASS_WORD ='123456'
如果你这用 parameterClass="String" 类型 只能传过来一个参数 select * from huser where LOGIN_NAME='admin'
追问
恩,这个上面的我已经解决了,另外再问一个:parameterClass=”输入参数类型”,如果输入参数类型是一个User对象,比如我想插入一条记录,怎么写sql(直接写我知道insert into huser(属性1,属性2.....) into values(值1,值2.....)),但是有些用到了dynamic,cdata这些,有什么不同呢,什么情况下用到。。。
追答
动态标签 主要是验证有些字段 不能为空的时候用到的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
像你这样,where后面想做动态语句的,那么稳妥些,先写个where 1= 1,然后再写动态语句部分。
如果有多个参数,parameterClass可以写User。只要保证使用的参数的名称和传入中名称一致就可以了。
如果有多个参数,parameterClass可以写User。只要保证使用的参数的名称和传入中名称一致就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询