Maven+SSM查询不到数据,也不会报错,返回值为null 解决方案

错误问题

当我使用Maven+SSM写登录案例的时候,mybatis的映射文件中的sql直接放在navicat中能查询出值,但是程序中的返回值却是null,控制台也不会报错,没有错误信息的提示。

解决方案

首先检查配置文件




	
		
		
		
	

	
	

  
  • 检查数据库名字是否错误

  • 检查dao层是否扫描到

  • 检查namespace是不是自己的dao层路径

  • 检查parameterType参数类型是不是传入参数的类型

  • 检查resultType是不是实体类的类型

如上,依旧查询不到数据,控制台也不会报错,返回值为null

重点检查

检查数据库字段名

我的数据库的字段:admin_name admin_pwd
Maven+SSM查询不到数据,也不会报错,返回值为null 解决方案_第1张图片
javaBean的实体类属性名:adminName adminPwd
Maven+SSM查询不到数据,也不会报错,返回值为null 解决方案_第2张图片
sql语句:

	SELECT * FROM admin WHERE
	admin_name=#{adminName, jdbcType=VARCHAR}
	AND
	admin_pwd=#{adminPwd, jdbcType=VARCHAR}

发现问题

由于查询结果的字段为admin_name,admin_pwd,在实体类中没有定义,所以查询结果为null

解决方案一

修改实体类为:admin_name admin_pwd,问题得到解决 能正常的查询到数据,

同样需要set get。

解决方案二

修改查询语句,给查询出来的数据取别名

sql语句:

	SELECT
	admin_name as adminName, admin_pwd as adminPwd
	FROM
	admin
	WHERE
	admin_name=#{adminName, jdbcType=VARCHAR}
	AND
	admin_pwd=#{adminPwd, jdbcType=VARCHAR}

总结

如果使用select * 来查询的 那么实体类中的属性必须和数据表中对应的字段一模一样

如果使用select 字段名 as 别名来查询的 ,那么实体类中的属性必须和你取的别名对应

总之,你查询出来的字段和你实体类中对应的属性名必须一致

你可能感兴趣的:(SSM)