mybatis中 mapper.xml中的sql查询语句 查询到的列值 为何 没有 赋值到 resultType对应的实体类的属性上

StartsWithLove IT  2015-12-04 10:35:27
..mapper.xml:

<mapper namespace="com.lht.dao.AdminDao">
<select id="findByAdminName" resultType="com.lht.entity.Admin">
select
admin_name as adminName,
admin_pwd as amdinPwd
from admins
where admin_name = #{1}
</select>
</mapper


实体类Admin:

@Component
public class Admin implements Serializable{
private String adminName;
private String adminPwd;
public String getAdminName() {
return adminName;
}
public void setAdminName(String adminName) {
System.out.println("底层调用setAdminName()");
this.adminName = adminName;
}
public String getAdminPwd() {
return adminPwd;
}
public void setAdminPwd(String adminPwd) {
System.out.println("底层调用setAdminPwd()");
this.adminPwd = adminPwd;
}


测试:

@Service
public class LoginServiceImpl implements LoginService, Serializable {

@Autowired
private AdminDao adminDao;

public Admin validate(String adminName, String adminPwd)
throws AdminCodeException, PasswordException {
if(adminName == null || adminName.equals("")){
throw new AdminCodeException("账号不能为空");
}
if(adminPwd == null || adminPwd.equals("")){
throw new PasswordException("密码不能为空");
}
//根据账号查询管理员
Admin admin = adminDao.findByAdminName(adminName);
System.out.println(admin.getAdminName()+","+admin.getAdminPwd());
//判断查询结果是否
if(admin == null){
//账号不存在
throw new AdminCodeException("账号不存在");
}else{
//继续判断密码是否正确
if(!adminPwd.equals(admin.getAdminPwd())){
//密码错误
throw new PasswordException("密码错误");
}
}
//验证通过
return admin;
}
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
LoginServiceImpl ser = ctx.getBean("loginServiceImpl",LoginServiceImpl.class);
try {
Admin a = ser.validate("lht", "123");
System.out.println(a.getAdminName());
} catch (AdminCodeException e) {
e.printStackTrace();
} catch (PasswordException e) {
e.printStackTrace();
}
}



结果:

底层调用setAdminName()
lht,null
com.lht.exception.PasswordException: 密码错误
at com.lht.service.LoginServiceImpl.validate(LoginServiceImpl.java:41)
at com.lht.service.LoginServiceImpl.main(LoginServiceImpl.java:51)


太奇怪了!
查询到的 admin_name 列值 赋值进了admin类的 adminName属性,
而 admin_pwd却没有赋值到adminPwd属性
...全文
3410 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
小秦亲 2016-10-14
主要是xml中的单词写错,以前我也犯这样的错误
  • 打赏
  • 举报
回复
ma130139 2015-12-07
引用 6 楼 StartsWithLove 的回复:
[quote=引用 4 楼 ma130139 的回复:] <mapper namespace="com.lht.dao.AdminDao"> <select id="findByAdminName" resultType="com.lht.entity.Admin"> select admin_name as adminName, admin_pwd as amdinPwd from admins where admin_name = #{1} </select> </mapper ------------------------------------- private String adminPwd; --------------------------你他妈的名字看对不对,我最恨这种人,我项目组的这种人我能骂死
admin_name as adminName, admin_pwd as amdinPwd 这里是不是有一种方法可以不用 as,我记得有一种方式会自动 把数据库字段转换成实体类属性的 比如: admin_name----->adminName [/quote] resultMap -----承认错误了 就是好同志
  • 打赏
  • 举报
回复
StartsWithLove 2015-12-04
引用 4 楼 ma130139 的回复:
<mapper namespace="com.lht.dao.AdminDao"> <select id="findByAdminName" resultType="com.lht.entity.Admin"> select admin_name as adminName, admin_pwd as amdinPwd from admins where admin_name = #{1} </select> </mapper ------------------------------------- private String adminPwd; --------------------------你他妈的名字看对不对,我最恨这种人,我项目组的这种人我能骂死
我他妈的蠢B!!!
  • 打赏
  • 举报
回复
ma130139 2015-12-04
<mapper namespace="com.lht.dao.AdminDao"> <select id="findByAdminName" resultType="com.lht.entity.Admin"> select admin_name as adminName, admin_pwd as amdinPwd from admins where admin_name = #{1} </select> </mapper ------------------------------------- private String adminPwd; --------------------------你他妈的名字看对不对,我最恨这种人,我项目组的这种人我能骂死
  • 打赏
  • 举报
回复
StartsWithLove 2015-12-04
引用 1 楼 u010199617 的回复:
你跟踪一下sql 然后放数据库执行一次!!你实体类里面都没有执行setpwd()
是啊 setAdminName()执行了,setAdminPwd()却没执行! 未免太怪异了
  • 打赏
  • 举报
回复
钉子4lmy 2015-12-04
你跟踪一下sql 然后放数据库执行一次!!你实体类里面都没有执行setpwd()
  • 打赏
  • 举报
回复
StartsWithLove 2015-12-04
查询的admin_name 注入了 admin的adminName属性,admin_pwd却没有注入到 adminPwd,太诡异了!!!! 我sql查询 admin_pwd是有的呀 并不是null啊!!!!! 顶顶顶!!! 求大神指点!
  • 打赏
  • 举报
回复
StartsWithLove 2015-12-04
引用 4 楼 ma130139 的回复:
<mapper namespace="com.lht.dao.AdminDao"> <select id="findByAdminName" resultType="com.lht.entity.Admin"> select admin_name as adminName, admin_pwd as amdinPwd from admins where admin_name = #{1} </select> </mapper ------------------------------------- private String adminPwd; --------------------------你他妈的名字看对不对,我最恨这种人,我项目组的这种人我能骂死
admin_name as adminName, admin_pwd as amdinPwd 这里是不是有一种方法可以不用 as,我记得有一种方式会自动 把数据库字段转换成实体类属性的 比如: admin_name----->adminName
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-12-04 10:35
社区公告
暂无公告