mybatis执行SQL查不到数据,在数据库执行可以查到
展开全部
datasource或者jdbc中的配置url不对 , 设置编码格式,表创建时候的编码格式需要在url中声明,并且传入的数据也应该是相同编码格式的(这个没注意,一直用的utf8).
比如 你创建一张表 使用的是engine innodb charset utf8;那么你的数据源url连接就应该是 jdbc:mysql://(数据库地址+端口)/(数据库名)?useUnicode=true&characterEncoding=utf8(可能还会有别的参数需要指定);
究其原因 还是因为编码格式的问题,你的李四 到数据库的前,会在myabtis做一些处理,做这些处理的时候,李四就可能不在是李四了 所以使用mybatis查询不到,但是在mysql中直接查询是查询得到的
比如 你创建一张表 使用的是engine innodb charset utf8;那么你的数据源url连接就应该是 jdbc:mysql://(数据库地址+端口)/(数据库名)?useUnicode=true&characterEncoding=utf8(可能还会有别的参数需要指定);
究其原因 还是因为编码格式的问题,你的李四 到数据库的前,会在myabtis做一些处理,做这些处理的时候,李四就可能不在是李四了 所以使用mybatis查询不到,但是在mysql中直接查询是查询得到的
展开全部
<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参数过来(默认不用写) ,或者传递一个对象过来也可以。
resultClass是User,如果你sql语句查询出来的结果集合大于1,那岂不是会有问题(可以返回一个Map,你自己必须要定义)
parameterClass="String"极端情况下,你的name和password都有值的话,你该咋办?如果说name和password都为空呢 ,最后的sql=select * from huser where 这又该怎么执行呢?
所以 如luoting2762所说,where 1=1 比较稳妥。
id=selectUserByNameAndPwd的标签,你可以传递一个Map参数过来(默认不用写) ,或者传递一个对象过来也可以。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询