mybatis执行SQL查不到数据,在数据库执行可以查到
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis执行SQL查不到数据,在数据库执行可以查到相关的知识,希望对你有一定的参考价值。
datasource或者jdbc中的配置url不对 , 设置编码格式,表创建时候的编码格式需要在url中声明,并且传入的数据也应该是相同编码格式的(这个没注意,一直用的utf8).比如 你创建一张表 使用的是engine innodb charset utf8;那么你的数据源url连接就应该是 jdbc:mysql://(数据库地址+端口)/(数据库名)?useUnicode=true&characterEncoding=utf8(可能还会有别的参数需要指定);
究其原因 还是因为编码格式的问题,你的李四 到数据库的前,会在myabtis做一些处理,做这些处理的时候,李四就可能不在是李四了 所以使用mybatis查询不到,但是在mysql中直接查询是查询得到的 参考技术A <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参数过来(默认不用写) ,或者传递一个对象过来也可以。
以上是关于mybatis执行SQL查不到数据,在数据库执行可以查到的主要内容,如果未能解决你的问题,请参考以下文章
记录一次 sql在数据库可以查到 mybatis代码查不到的问题
Java实战之路:SpringBoot项目中使用Mybatis打印Sql语句