mybatis往配置文件中传入拼接好的条件语句 30

在程序中生成了字符串“(age>'20'and'200'>ageandsex='1')”,现在要传入到配置文件中,大于号换成>单引号换成'都试过了,配置文件里面... 在程序中生成了字符串 “( age >'20' and '200'>age and sex='1' ) ”,现在要传入到配置文件中,大于号换成>单引号换成'都试过了,配置文件里面是这么写的
<select id="queryByCondition" parameterType="java.util.HashMap"
resultMap="BaseResultModelMap">
select * from user where 1=1
<if test="Condition!=null">
#{Condition,jdbcType=VARCHAR}
</if>
<if test="start!=null">
limit #{start,jdbcType=INTEGER} ,#{pageSize,jdbcType=INTEGER}
</if>
</select>
Condition就是我传入的字符串,现在总是报错,错误信息是
DEBUG - ==> Executing: select * from user where 1=1 ?
DEBUG - ==> Parameters: and ( age >'20' and '200'>age and sex='1' ) (String)
org.apache.ibatis.exceptions.IbatisException:
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''and ( age >\'20\' and \'200\'>age and sex=\'1\' ) '' at line 3
### The error may involve com.goalwisdom.gwnis.repository.dao.UserDao.queryByCondition-Inline
### The error occurred while setting parameters
提问中的大于号& g t;直接被网页转义了,分号也是,
最好是谁有写过这样的代码把字符串的格式和XML文件中接收方式粘贴上来
展开
 我来答
dengjiayu008
推荐于2018-03-02
知道答主
回答量:20
采纳率:100%
帮助的人:8.8万
展开全部
用${} 就不会当成字符串解析 会直接加上去 不过这个要慎用 防止被sql注入
mybatis xml 解析传入参数有2种 #{} 与${} 前面那种会把你传入的参数当成字符串解析 也就是你无论传入什么 都会被加上''号 后面那一种 你传入什么 就是什么 。

提交个回答还被要求详细描述! 相信懂的看到第一句都懂了吧··
匿名用户
2014-08-25
展开全部

用转义符:demo如下

<![CDATA[ 
when min(starttime)<='12:00' and max(endtime)<='12:00' 
]]>
追问
不行,这个我试过了的,接收字符串的方式应该存在问题,网上能查的基本都查过了,需要有写过的人的完整代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式